fx-form-builder-wrapper 2.0.80 → 2.0.82

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.
@@ -110,13 +110,13 @@ export class MultiselectDropdownComponent extends FxBaseComponent {
110
110
  }
111
111
  }
112
112
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiselectDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.FxBuilderWrapperService }, { token: i3.ApiServiceRegistry }], target: i0.ɵɵFactoryTarget.Component });
113
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultiselectDropdownComponent, isStandalone: true, selector: "lib-multiselect-dropdown", viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n\r\n\r\n <div class=\"custom-dropdown\" [ngClass]=\"setting('customClassMulti')\">\r\n <form [formGroup]=\"multiselectDropDownForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label-multi') }}\r\n </label>\r\n <p-multiSelect [options]=\"options\" formControlName=\"multipleSelectedOption\" [optionLabel]=\"setting('label-key')\"\r\n [placeholder]=\"setting('placeholderMulti')\" class=\"multiselect\">\r\n\r\n <!-- Custom Dropdown Icon -->\r\n <ng-template pTemplate=\"dropdownicon\">\r\n <div class=\"flex align-items-center dd_down_icon\">\r\n <span class=\"pi pi-angle-down text-xl\"></span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n <small\r\n *ngIf=\"multiselectDropDownForm.get('multipleSelectedOption')?.touched && multiselectDropDownForm.get('multipleSelectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('multiErrorMessage')}}\r\n </small>\r\n </div>\r\n </form>\r\n </div>\r\n</fx-component>", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";::ng-deep .p-multiselect.p-component.p-inputwrapper{height:37.6px!important;border:1px solid #cdcdcd!important;width:100%!important}.dd_down_icon span{color:#f3a041}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i7.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }] });
113
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultiselectDropdownComponent, isStandalone: true, selector: "lib-multiselect-dropdown", viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"custom-dropdown\" [ngClass]=\"setting('customClassMulti')\">\r\n <form [formGroup]=\"multiselectDropDownForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label-multi') }}\r\n </label>\r\n <p-multiSelect [options]=\"options\" formControlName=\"multipleSelectedOption\" [optionLabel]=\"setting('label-key')\"\r\n [placeholder]=\"setting('placeholderMulti')\" class=\"multiselect\">\r\n\r\n <!-- Custom Dropdown Icon -->\r\n <ng-template pTemplate=\"dropdownicon\">\r\n <div class=\"flex align-items-center dd_down_icon\">\r\n <span class=\"pi pi-angle-down text-xl\"></span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n <small\r\n *ngIf=\"multiselectDropDownForm.get('multipleSelectedOption')?.touched && multiselectDropDownForm.get('multipleSelectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('multiErrorMessage')}}\r\n </small>\r\n </div>\r\n </form>\r\n </div>\r\n</fx-component>", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";::ng-deep .p-multiselect.p-component.p-inputwrapper{height:37.6px!important;border:1px solid #cdcdcd!important;width:100%!important}.dd_down_icon span{color:#f3a041}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i7.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }] });
114
114
  }
115
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiselectDropdownComponent, decorators: [{
116
116
  type: Component,
117
- args: [{ selector: 'lib-multiselect-dropdown', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent, CalendarModule, MultiSelectModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n\r\n\r\n <div class=\"custom-dropdown\" [ngClass]=\"setting('customClassMulti')\">\r\n <form [formGroup]=\"multiselectDropDownForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label-multi') }}\r\n </label>\r\n <p-multiSelect [options]=\"options\" formControlName=\"multipleSelectedOption\" [optionLabel]=\"setting('label-key')\"\r\n [placeholder]=\"setting('placeholderMulti')\" class=\"multiselect\">\r\n\r\n <!-- Custom Dropdown Icon -->\r\n <ng-template pTemplate=\"dropdownicon\">\r\n <div class=\"flex align-items-center dd_down_icon\">\r\n <span class=\"pi pi-angle-down text-xl\"></span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n <small\r\n *ngIf=\"multiselectDropDownForm.get('multipleSelectedOption')?.touched && multiselectDropDownForm.get('multipleSelectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('multiErrorMessage')}}\r\n </small>\r\n </div>\r\n </form>\r\n </div>\r\n</fx-component>", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";::ng-deep .p-multiselect.p-component.p-inputwrapper{height:37.6px!important;border:1px solid #cdcdcd!important;width:100%!important}.dd_down_icon span{color:#f3a041}\n"] }]
117
+ args: [{ selector: 'lib-multiselect-dropdown', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent, CalendarModule, MultiSelectModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"custom-dropdown\" [ngClass]=\"setting('customClassMulti')\">\r\n <form [formGroup]=\"multiselectDropDownForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label-multi') }}\r\n </label>\r\n <p-multiSelect [options]=\"options\" formControlName=\"multipleSelectedOption\" [optionLabel]=\"setting('label-key')\"\r\n [placeholder]=\"setting('placeholderMulti')\" class=\"multiselect\">\r\n\r\n <!-- Custom Dropdown Icon -->\r\n <ng-template pTemplate=\"dropdownicon\">\r\n <div class=\"flex align-items-center dd_down_icon\">\r\n <span class=\"pi pi-angle-down text-xl\"></span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n <small\r\n *ngIf=\"multiselectDropDownForm.get('multipleSelectedOption')?.touched && multiselectDropDownForm.get('multipleSelectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('multiErrorMessage')}}\r\n </small>\r\n </div>\r\n </form>\r\n </div>\r\n</fx-component>", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";::ng-deep .p-multiselect.p-component.p-inputwrapper{height:37.6px!important;border:1px solid #cdcdcd!important;width:100%!important}.dd_down_icon span{color:#f3a041}\n"] }]
118
118
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.FxBuilderWrapperService }, { type: i3.ApiServiceRegistry }], propDecorators: { fxComponent: [{
119
119
  type: ViewChild,
120
120
  args: ['fxComponent']
121
121
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aXNlbGVjdC1kcm9wZG93bi9tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpc2VsZWN0LWRyb3Bkb3duL211bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBYSxlQUFlLEVBQUUsZUFBZSxFQUFvQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkssT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBU3hELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxlQUFlO0lBYzNDO0lBQWdDO0lBQTBCO0lBQTBEO0lBWmhJLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFD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QUFDLFFBQWEsRUFBRSxFQUFFO29CQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDL0MsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLGFBQWEsQ0FBUyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDdkgsQ0FBQztJQUNILENBQUM7d0dBMUdVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLHVOQ2xCekMscXVDQTJCZSw4YkRiSCxZQUFZLGdPQUFFLG1CQUFtQiw0ckJBQUUsV0FBVywrQkFBRSxXQUFXLDRFQUFFLGNBQWMscUlBQUUsaUJBQWlCOzs0RkFJN0YsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUM7c0xBVS9FLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZ4Q29tcG9uZW50LCBGeFNldHRpbmcsIEZ4U3RyaW5nU2V0dGluZywgRnhTZWxlY3RTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSwgRnhCYXNlQ29tcG9uZW50LCBGeE9wdGlvblNldHRpbmcgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnkgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2NvcmUnXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XHJcbmltcG9ydCB7IE11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tdWx0aXNlbGVjdC1kcm9wZG93bicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSwgRnhDb21wb25lbnQsIENhbGVuZGFyTW9kdWxlLCBNdWx0aVNlbGVjdE1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBGeEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Qm9vbGVhbj4oKTtcclxuICBmb3JtT2JqZWN0OiBvYmplY3QgPSB7fTtcclxuICBtdWx0aXNlbGVjdERyb3Bkb3duTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICBAVmlld0NoaWxkKCdmeENvbXBvbmVudCcpIGZ4Q29tcG9uZW50ITogRnhDb21wb25lbnQ7XHJcbiBcclxuICBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgbXVsdGlzZWxlY3REcm9wRG93bkZvcm06IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgbXVsdGlwbGVTZWxlY3RlZE9wdGlvbjogW1tdXSxcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLCBwcml2YXRlIGZ4QXBpU2VydmljZTogQXBpU2VydmljZVJlZ2lzdHJ5KSB7XHJcbiAgICBzdXBlcihjZHIpXHJcbiAgICB0aGlzLm9uSW5pdC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLm11bHRpc2VsZWN0RHJvcERvd25Gb3JtKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZygnbXVsdGlTZWxlY3RPcHRpb25BUElVUkwnKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ2l0ZW1zT3B0aW9uJykgYXMgYW55KT8ub3B0aW9ucyB8fCBbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qga2V5ID0gdGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5uYW1lO1xyXG5cclxuICAgICAgaWYgKGtleSAmJiB0aGlzLm11bHRpc2VsZWN0RHJvcGRvd25NYXAuaGFzKGtleSkpIHtcclxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0RHJvcERvd25Gb3JtLnBhdGNoVmFsdWUodGhpcy5tdWx0aXNlbGVjdERyb3Bkb3duTWFwLmdldChrZXkpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMjAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgbWFpbkNvbnRyb2wgPSB0aGlzLm11bHRpc2VsZWN0RHJvcERvd25Gb3JtLmdldCgnbXVsdGlwbGVTZWxlY3RlZE9wdGlvbicpO1xyXG4gICAgICBpZiAodGhpcy5zZXR0aW5nKCdpc011bHRpUmVxdWlyZWQnKSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgbWFpbkNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICBtYWluQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcblxyXG4gICAgICAgIC8vICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpIGFzIFtzdHJpbmcsIGFueV1bXSkge1xyXG4gICAgICAgIC8vICAgIGlmIChrZXkuaW5jbHVkZXMoJ2Ryb3Bkb3duLXdpdGgtb3RoZXInKSkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLmZvcm1PYmplY3QgPSB2YWx1ZTtcclxuICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgLy8gIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdmFsdWUgJiZcclxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICAnbXVsdGlwbGVTZWxlY3RlZE9wdGlvbicgaW4gdmFsdWVcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0RHJvcGRvd25NYXAuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcblxyXG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuZnhBcGlTZXJ2aWNlLmdldFNlcnZpY2VVcmwodGhpcy5zZXR0aW5nKCdzZXJ2aWNlTXVsdGlOYW1lJykpO1xyXG4gICAgdGhpcy5nZXRPcHRpb25zKHNlcnZpY2VVcmwsIHRoaXMuc2V0dGluZygnbXVsdGlTZWxlY3RPcHRpb25BUElVUkwnKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4T3B0aW9uU2V0dGluZyh7IGtleTogJ2l0ZW1zT3B0aW9uJywgJHRpdGxlOiAnT3B0aW9ucycsIHZhbHVlOiBbeyBvcHRpb246ICdZZXMnLCB2YWx1ZTogJ3llcycgfSwgeyBvcHRpb246ICdObycsIHZhbHVlOiAnbm8nIH1dIH0sIFt7IG9wdGlvbjogJ1llcycsIHZhbHVlOiAneWVzJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdubycgfV0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbXVsdGlTZWxlY3RPcHRpb25BUElVUkwnLCAkdGl0bGU6ICdBUEkgVXJsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnY3VzdG9tQ2xhc3NNdWx0aScsICR0aXRsZTogJ0N1c3RvbSBDbGFzcyBOYW1lJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnc2VsZWN0LWxhYmVsLW11bHRpJywgJHRpdGxlOiAnTGFiZWwnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdsYWJlbC1rZXknLCAkdGl0bGU6ICdMYWJlbCBLZXknLCB2YWx1ZTogJ29wdGlvbicgfSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoeyBrZXk6ICdzZXJ2aWNlTXVsdGlOYW1lJywgJHRpdGxlOiAnU2VydmljZScsIHZhbHVlOiAnJyB9LCBbeyBvcHRpb246ICdVc2VyIFNlcnZpY2UnLCB2YWx1ZTogJ3VzZXJfc2VydmljZScgfSwgeyBvcHRpb246ICdQYXRpZW50IFNlcnZpY2UnLCB2YWx1ZTogJ3BhdGllbnRfc2VydmljZScgfSwgeyBvcHRpb246ICdXb3JrZmxvdyBTZXJ2aWNlJywgdmFsdWU6ICd3b3JrZmxvd19zZXJ2aWNlJyB9XSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoeyBrZXk6ICdpc011bHRpUmVxdWlyZWQnLCAkdGl0bGU6ICdSZXF1aXJlZCcsIHZhbHVlOiAndHJ1ZScgfSwgW3sgb3B0aW9uOiAnWWVzJywgdmFsdWU6ICd0cnVlJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdmYWxzZScgfV0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbXVsdGlFcnJvck1lc3NhZ2UnLCAkdGl0bGU6ICdFcnJvciBNZXNzYWdlJywgdmFsdWU6ICdQbGVhc2Ugc2VsZWN0JyB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3BsYWNlaG9sZGVyTXVsdGknLCAkdGl0bGU6ICdQbGFjZWhvbGRlcicsIHZhbHVlOiAnU2VsZWN0JyB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucyhzZXJ2aWNlVXJsOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIGNvbnN0IGZpbmFsVXJsID0gc2VydmljZVVybCArIHVybDtcclxuICAgICAgdGhpcy5odHRwLmdldDxhbnlbXT4oZmluYWxVcmwpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlPy5kYXRhO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9wdGlvbnMnLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ2l0ZW1zT3B0aW9uJykgYXMgYW55KT8ub3B0aW9ucyB8fCBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxmeC1jb21wb25lbnQgW2Z4RGF0YV09XCJmeERhdGFcIiAjZnhDb21wb25lbnQ+XHJcblxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCIgW25nQ2xhc3NdPVwic2V0dGluZygnY3VzdG9tQ2xhc3NNdWx0aScpXCI+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm11bHRpc2VsZWN0RHJvcERvd25Gb3JtXCIgY2xhc3M9XCJmbGV4IGdhcC00IHctZnVsbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZGFyazp0ZXh0LWdyYXktMzAwXCI+XHJcbiAgICAgICAgICB7eyBzZXR0aW5nKCdzZWxlY3QtbGFiZWwtbXVsdGknKSB9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwib3B0aW9uc1wiIGZvcm1Db250cm9sTmFtZT1cIm11bHRpcGxlU2VsZWN0ZWRPcHRpb25cIiBbb3B0aW9uTGFiZWxdPVwic2V0dGluZygnbGFiZWwta2V5JylcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNldHRpbmcoJ3BsYWNlaG9sZGVyTXVsdGknKVwiIGNsYXNzPVwibXVsdGlzZWxlY3RcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIEN1c3RvbSBEcm9wZG93biBJY29uIC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRyb3Bkb3duaWNvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZGRfZG93bl9pY29uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1hbmdsZS1kb3duIHRleHQteGxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgPHNtYWxsXHJcbiAgICAgICAgICAqbmdJZj1cIm11bHRpc2VsZWN0RHJvcERvd25Gb3JtLmdldCgnbXVsdGlwbGVTZWxlY3RlZE9wdGlvbicpPy50b3VjaGVkICYmIG11bHRpc2VsZWN0RHJvcERvd25Gb3JtLmdldCgnbXVsdGlwbGVTZWxlY3RlZE9wdGlvbicpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMFwiPlxyXG4gICAgICAgICAge3sgc2V0dGluZygnbXVsdGlFcnJvck1lc3NhZ2UnKX19XHJcbiAgICAgICAgPC9zbWFsbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9kaXY+XHJcbjwvZngtY29tcG9uZW50PiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aXNlbGVjdC1kcm9wZG93bi9tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpc2VsZWN0LWRyb3Bkb3duL211bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBYSxlQUFlLEVBQUUsZUFBZSxFQUFvQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkssT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBU3hELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxlQUFlO0lBYzNDO0lBQWdDO0lBQTBCO0lBQTBEO0lBWmhJLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFD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QUFDLFFBQWEsRUFBRSxFQUFFO29CQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDL0MsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLGFBQWEsQ0FBUyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDdkgsQ0FBQztJQUNILENBQUM7d0dBMUdVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLHVOQ2xCekMsc3VDQXlCZSw4YkRYSCxZQUFZLGdPQUFFLG1CQUFtQiw0ckJBQUUsV0FBVywrQkFBRSxXQUFXLDRFQUFFLGNBQWMscUlBQUUsaUJBQWlCOzs0RkFJN0YsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUM7c0xBVS9FLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZ4Q29tcG9uZW50LCBGeFNldHRpbmcsIEZ4U3RyaW5nU2V0dGluZywgRnhTZWxlY3RTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSwgRnhCYXNlQ29tcG9uZW50LCBGeE9wdGlvblNldHRpbmcgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnkgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2NvcmUnXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XHJcbmltcG9ydCB7IE11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tdWx0aXNlbGVjdC1kcm9wZG93bicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSwgRnhDb21wb25lbnQsIENhbGVuZGFyTW9kdWxlLCBNdWx0aVNlbGVjdE1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBGeEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Qm9vbGVhbj4oKTtcclxuICBmb3JtT2JqZWN0OiBvYmplY3QgPSB7fTtcclxuICBtdWx0aXNlbGVjdERyb3Bkb3duTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICBAVmlld0NoaWxkKCdmeENvbXBvbmVudCcpIGZ4Q29tcG9uZW50ITogRnhDb21wb25lbnQ7XHJcbiBcclxuICBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgbXVsdGlzZWxlY3REcm9wRG93bkZvcm06IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgbXVsdGlwbGVTZWxlY3RlZE9wdGlvbjogW1tdXSxcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLCBwcml2YXRlIGZ4QXBpU2VydmljZTogQXBpU2VydmljZVJlZ2lzdHJ5KSB7XHJcbiAgICBzdXBlcihjZHIpXHJcbiAgICB0aGlzLm9uSW5pdC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLm11bHRpc2VsZWN0RHJvcERvd25Gb3JtKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZygnbXVsdGlTZWxlY3RPcHRpb25BUElVUkwnKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ2l0ZW1zT3B0aW9uJykgYXMgYW55KT8ub3B0aW9ucyB8fCBbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qga2V5ID0gdGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5uYW1lO1xyXG5cclxuICAgICAgaWYgKGtleSAmJiB0aGlzLm11bHRpc2VsZWN0RHJvcGRvd25NYXAuaGFzKGtleSkpIHtcclxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0RHJvcERvd25Gb3JtLnBhdGNoVmFsdWUodGhpcy5tdWx0aXNlbGVjdERyb3Bkb3duTWFwLmdldChrZXkpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMjAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgbWFpbkNvbnRyb2wgPSB0aGlzLm11bHRpc2VsZWN0RHJvcERvd25Gb3JtLmdldCgnbXVsdGlwbGVTZWxlY3RlZE9wdGlvbicpO1xyXG4gICAgICBpZiAodGhpcy5zZXR0aW5nKCdpc011bHRpUmVxdWlyZWQnKSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgbWFpbkNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICBtYWluQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcblxyXG4gICAgICAgIC8vICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpIGFzIFtzdHJpbmcsIGFueV1bXSkge1xyXG4gICAgICAgIC8vICAgIGlmIChrZXkuaW5jbHVkZXMoJ2Ryb3Bkb3duLXdpdGgtb3RoZXInKSkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLmZvcm1PYmplY3QgPSB2YWx1ZTtcclxuICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgLy8gIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdmFsdWUgJiZcclxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICAnbXVsdGlwbGVTZWxlY3RlZE9wdGlvbicgaW4gdmFsdWVcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0RHJvcGRvd25NYXAuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcblxyXG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuZnhBcGlTZXJ2aWNlLmdldFNlcnZpY2VVcmwodGhpcy5zZXR0aW5nKCdzZXJ2aWNlTXVsdGlOYW1lJykpO1xyXG4gICAgdGhpcy5nZXRPcHRpb25zKHNlcnZpY2VVcmwsIHRoaXMuc2V0dGluZygnbXVsdGlTZWxlY3RPcHRpb25BUElVUkwnKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4T3B0aW9uU2V0dGluZyh7IGtleTogJ2l0ZW1zT3B0aW9uJywgJHRpdGxlOiAnT3B0aW9ucycsIHZhbHVlOiBbeyBvcHRpb246ICdZZXMnLCB2YWx1ZTogJ3llcycgfSwgeyBvcHRpb246ICdObycsIHZhbHVlOiAnbm8nIH1dIH0sIFt7IG9wdGlvbjogJ1llcycsIHZhbHVlOiAneWVzJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdubycgfV0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbXVsdGlTZWxlY3RPcHRpb25BUElVUkwnLCAkdGl0bGU6ICdBUEkgVXJsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnY3VzdG9tQ2xhc3NNdWx0aScsICR0aXRsZTogJ0N1c3RvbSBDbGFzcyBOYW1lJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnc2VsZWN0LWxhYmVsLW11bHRpJywgJHRpdGxlOiAnTGFiZWwnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdsYWJlbC1rZXknLCAkdGl0bGU6ICdMYWJlbCBLZXknLCB2YWx1ZTogJ29wdGlvbicgfSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoeyBrZXk6ICdzZXJ2aWNlTXVsdGlOYW1lJywgJHRpdGxlOiAnU2VydmljZScsIHZhbHVlOiAnJyB9LCBbeyBvcHRpb246ICdVc2VyIFNlcnZpY2UnLCB2YWx1ZTogJ3VzZXJfc2VydmljZScgfSwgeyBvcHRpb246ICdQYXRpZW50IFNlcnZpY2UnLCB2YWx1ZTogJ3BhdGllbnRfc2VydmljZScgfSwgeyBvcHRpb246ICdXb3JrZmxvdyBTZXJ2aWNlJywgdmFsdWU6ICd3b3JrZmxvd19zZXJ2aWNlJyB9XSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoeyBrZXk6ICdpc011bHRpUmVxdWlyZWQnLCAkdGl0bGU6ICdSZXF1aXJlZCcsIHZhbHVlOiAndHJ1ZScgfSwgW3sgb3B0aW9uOiAnWWVzJywgdmFsdWU6ICd0cnVlJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdmYWxzZScgfV0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbXVsdGlFcnJvck1lc3NhZ2UnLCAkdGl0bGU6ICdFcnJvciBNZXNzYWdlJywgdmFsdWU6ICdQbGVhc2Ugc2VsZWN0JyB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3BsYWNlaG9sZGVyTXVsdGknLCAkdGl0bGU6ICdQbGFjZWhvbGRlcicsIHZhbHVlOiAnU2VsZWN0JyB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucyhzZXJ2aWNlVXJsOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIGNvbnN0IGZpbmFsVXJsID0gc2VydmljZVVybCArIHVybDtcclxuICAgICAgdGhpcy5odHRwLmdldDxhbnlbXT4oZmluYWxVcmwpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlPy5kYXRhO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9wdGlvbnMnLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ2l0ZW1zT3B0aW9uJykgYXMgYW55KT8ub3B0aW9ucyB8fCBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxmeC1jb21wb25lbnQgW2Z4RGF0YV09XCJmeERhdGFcIiAjZnhDb21wb25lbnQ+XHJcbiAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiIFtuZ0NsYXNzXT1cInNldHRpbmcoJ2N1c3RvbUNsYXNzTXVsdGknKVwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJtdWx0aXNlbGVjdERyb3BEb3duRm9ybVwiIGNsYXNzPVwiZmxleCBnYXAtNCB3LWZ1bGxcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMSByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImlucHV0LWxhYmVsIGRhcms6dGV4dC1ncmF5LTMwMFwiPlxyXG4gICAgICAgICAge3sgc2V0dGluZygnc2VsZWN0LWxhYmVsLW11bHRpJykgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cIm9wdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aXBsZVNlbGVjdGVkT3B0aW9uXCIgW29wdGlvbkxhYmVsXT1cInNldHRpbmcoJ2xhYmVsLWtleScpXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZXR0aW5nKCdwbGFjZWhvbGRlck11bHRpJylcIiBjbGFzcz1cIm11bHRpc2VsZWN0XCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBDdXN0b20gRHJvcGRvd24gSWNvbiAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkcm9wZG93bmljb25cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGRkX2Rvd25faWNvblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtZG93biB0ZXh0LXhsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgIDxzbWFsbFxyXG4gICAgICAgICAgKm5nSWY9XCJtdWx0aXNlbGVjdERyb3BEb3duRm9ybS5nZXQoJ211bHRpcGxlU2VsZWN0ZWRPcHRpb24nKT8udG91Y2hlZCAmJiBtdWx0aXNlbGVjdERyb3BEb3duRm9ybS5nZXQoJ211bHRpcGxlU2VsZWN0ZWRPcHRpb24nKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj5cclxuICAgICAgICAgIHt7IHNldHRpbmcoJ211bHRpRXJyb3JNZXNzYWdlJyl9fVxyXG4gICAgICAgIDwvc21hbGw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG48L2Z4LWNvbXBvbmVudD4iXX0=
@@ -0,0 +1,150 @@
1
+ import { Component, inject, ViewChild } from '@angular/core';
2
+ import { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
3
+ import { FxComponent, FxStringSetting, FxSelectSetting, FxBaseComponent, FxOptionSetting } from '@instantsys-labs/fx';
4
+ import { Subject, takeUntil } from 'rxjs';
5
+ import { CommonModule } from '@angular/common';
6
+ import { CalendarModule } from 'primeng/calendar';
7
+ import { MultiSelectModule } from 'primeng/multiselect';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common/http";
10
+ import * as i2 from "../../fx-builder-wrapper.service";
11
+ import * as i3 from "@instantsys-labs/core";
12
+ import * as i4 from "@angular/common";
13
+ import * as i5 from "@angular/forms";
14
+ import * as i6 from "primeng/api";
15
+ import * as i7 from "primeng/multiselect";
16
+ export class MultiselectDropdownWithChildsComponent extends FxBaseComponent {
17
+ cdr;
18
+ http;
19
+ fxBuilderWrapperService;
20
+ fxApiService;
21
+ fb = inject(FormBuilder);
22
+ destroy$ = new Subject();
23
+ formObject = {};
24
+ multiChildDropdownMap = new Map();
25
+ fxComponent;
26
+ options = [];
27
+ multiChildDropDownForm = this.fb.group({
28
+ multipleChildSelectedOption: [[]],
29
+ child1: [''],
30
+ child2: [''],
31
+ child1Label: [''],
32
+ child2Label: [''],
33
+ });
34
+ constructor(cdr, http, fxBuilderWrapperService, fxApiService) {
35
+ super(cdr);
36
+ this.cdr = cdr;
37
+ this.http = http;
38
+ this.fxBuilderWrapperService = fxBuilderWrapperService;
39
+ this.fxApiService = fxApiService;
40
+ this.onInit.subscribe(() => {
41
+ this._register(this.multiChildDropDownForm);
42
+ });
43
+ }
44
+ ngAfterViewInit() {
45
+ if (!this.setting('multiChildOptionAPIURL')) {
46
+ this.options = this.fxComponent?.fxData?.settings?.find((s) => s.key === 'itemsChildOption')?.options || [];
47
+ }
48
+ const child1LabelControl = this.multiChildDropDownForm.get('child1Label');
49
+ const child2LabelControl = this.multiChildDropDownForm.get('child2Label');
50
+ child1LabelControl?.setValue(this.setting('child-1-label'));
51
+ child2LabelControl?.setValue(this.setting('child-2-label'));
52
+ child1LabelControl?.updateValueAndValidity();
53
+ child2LabelControl?.updateValueAndValidity();
54
+ setTimeout(() => {
55
+ const key = this.fxComponent?.fxData?.name;
56
+ if (key && this.multiChildDropdownMap.has(key)) {
57
+ this.multiChildDropDownForm.patchValue(this.multiChildDropdownMap.get(key));
58
+ }
59
+ }, 200);
60
+ setTimeout(() => {
61
+ const mainControl = this.multiChildDropDownForm.get('multipleChildSelectedOption');
62
+ const child1Control = this.multiChildDropDownForm.get('child1');
63
+ const child2Control = this.multiChildDropDownForm.get('child2');
64
+ if (this.setting('isMultiChildRequired') === 'true') {
65
+ mainControl?.setValidators([Validators.required]);
66
+ mainControl?.updateValueAndValidity();
67
+ }
68
+ if (this.setting('isChild1Required') === 'true') {
69
+ child1Control?.setValidators([Validators.required]);
70
+ child1Control?.updateValueAndValidity();
71
+ }
72
+ if (this.setting('isChild2Required') === 'true') {
73
+ child2Control?.setValidators([Validators.required]);
74
+ child2Control?.updateValueAndValidity();
75
+ }
76
+ }, 1000);
77
+ }
78
+ ngOnInit() {
79
+ this.fxBuilderWrapperService.variables$
80
+ .pipe(takeUntil(this.destroy$))
81
+ .subscribe((variables) => {
82
+ if (!variables)
83
+ return;
84
+ // for (const [key, value] of Object.entries(variables) as [string, any][]) {
85
+ // if (key.includes('dropdown-with-other')) {
86
+ // this.formObject = value;
87
+ // }
88
+ // }
89
+ for (const [key, value] of Object.entries(variables)) {
90
+ if (value &&
91
+ typeof value === 'object' &&
92
+ 'multipleChildSelectedOption' in value) {
93
+ this.multiChildDropdownMap.set(key, value);
94
+ }
95
+ }
96
+ });
97
+ const serviceUrl = this.fxApiService.getServiceUrl(this.setting('serviceMultiName'));
98
+ this.getOptions(serviceUrl, this.setting('multiChildOptionAPIURL'));
99
+ }
100
+ settings() {
101
+ return [
102
+ new FxOptionSetting({ key: 'itemsChildOption', $title: 'Options', value: [{ option: 'Yes', value: 'yes' }, { option: 'No', value: 'no' }] }, [{ option: 'Yes', value: 'yes' }, { option: 'No', value: 'no' }]),
103
+ new FxStringSetting({ key: 'multiChildOptionAPIURL', $title: 'API Url', value: '' }),
104
+ new FxStringSetting({ key: 'customClassMultiChild', $title: 'Custom Class Name', value: '' }),
105
+ new FxStringSetting({ key: 'select-label-multi-child', $title: 'Label', value: '' }),
106
+ new FxStringSetting({ key: 'label-key-child', $title: 'Label Key', value: 'option' }),
107
+ new FxSelectSetting({ key: 'serviceMultiName', $title: 'Service', value: '' }, [{ option: 'User Service', value: 'user_service' }, { option: 'Patient Service', value: 'patient_service' }, { option: 'Workflow Service', value: 'workflow_service' }]),
108
+ new FxSelectSetting({ key: 'isMultiChildRequired', $title: 'Required', value: 'true' }, [{ option: 'Yes', value: 'true' }, { option: 'No', value: 'false' }]),
109
+ new FxStringSetting({ key: 'multiChildErrorMessage', $title: 'Error Message', value: 'Please select' }),
110
+ new FxStringSetting({ key: 'placeholderMultiChild', $title: 'Placeholder', value: 'Select' }),
111
+ new FxStringSetting({ key: 'child-1-label', $title: 'Child 1 Label', value: '' }),
112
+ new FxStringSetting({ key: 'child-1-placeholder', $title: 'Child 1 Placeholder', value: 'enter here' }),
113
+ new FxSelectSetting({ key: 'isChild1Required', $title: 'Required', value: 'true' }, [{ option: 'Yes', value: 'true' }, { option: 'No', value: 'false' }]),
114
+ new FxStringSetting({ key: 'child1ErrorMessage', $title: 'Error Message', value: 'Please fill out the field' }),
115
+ new FxStringSetting({ key: 'child-2-label', $title: 'Child 2 Label', value: '' }),
116
+ new FxStringSetting({ key: 'child-2-placeholder', $title: 'Child 2 Placeholder', value: 'enter here' }),
117
+ new FxSelectSetting({ key: 'isChild2Required', $title: 'Required', value: 'true' }, [{ option: 'Yes', value: 'true' }, { option: 'No', value: 'false' }]),
118
+ new FxStringSetting({ key: 'child2ErrorMessage', $title: 'Error Message', value: 'Please fill out the field' }),
119
+ ];
120
+ }
121
+ validations() {
122
+ return [];
123
+ }
124
+ getOptions(serviceUrl, url) {
125
+ if (url) {
126
+ const finalUrl = serviceUrl + url;
127
+ this.http.get(finalUrl).subscribe({
128
+ next: (response) => {
129
+ this.options = response?.data;
130
+ },
131
+ error: (err) => {
132
+ console.error('Error fetching options', err);
133
+ }
134
+ });
135
+ }
136
+ else {
137
+ this.options = this.fxComponent?.fxData?.settings?.find((s) => s.key === 'itemsChildOption')?.options || [];
138
+ }
139
+ }
140
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiselectDropdownWithChildsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.FxBuilderWrapperService }, { token: i3.ApiServiceRegistry }], target: i0.ɵɵFactoryTarget.Component });
141
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultiselectDropdownWithChildsComponent, isStandalone: true, selector: "lib-multiselect-dropdown-with-childs", viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n<div class=\"custom-dropdown\" [ngClass]=\"setting('customClassMultiChild')\">\r\n <form [formGroup]=\"multiChildDropDownForm\" class=\"flex gap-4 w-full\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label-multi-child') }}\r\n </label>\r\n <p-multiSelect [options]=\"options\" formControlName=\"multipleChildSelectedOption\" [optionLabel]=\"setting('label-key-child')\"\r\n [placeholder]=\"setting('placeholderMultiChild')\" class=\"multiselect\">\r\n\r\n <!-- Custom Dropdown Icon -->\r\n <ng-template pTemplate=\"dropdownicon\">\r\n <div class=\"flex align-items-center dd_down_icon\">\r\n <span class=\"pi pi-angle-down text-xl\"></span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n <small\r\n *ngIf=\"multiChildDropDownForm.get('multipleChildSelectedOption')?.touched && multiChildDropDownForm.get('multipleChildSelectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('multiChildErrorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <!-- Other input -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('child-1-label') }}\r\n </label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"child1\"\r\n placeholder=\"{{ setting('child-1-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n >\r\n\r\n <small\r\n *ngIf=\"multiChildDropDownForm.get('child1')?.touched && multiChildDropDownForm.get('child1')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('child1ErrorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('child-2-label') }}\r\n </label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"child2\"\r\n placeholder=\"{{ setting('child-2-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n >\r\n\r\n <small\r\n *ngIf=\"multiChildDropDownForm.get('child2')?.touched && multiChildDropDownForm.get('child2')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('child2ErrorMessage')}}\r\n </small>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n</fx-component>", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";::ng-deep .p-multiselect.p-component.p-inputwrapper{height:37.6px!important;border:1px solid #cdcdcd!important;width:100%!important}.dd_down_icon span{color:#f3a041}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i7.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }] });
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiselectDropdownWithChildsComponent, decorators: [{
144
+ type: Component,
145
+ args: [{ selector: 'lib-multiselect-dropdown-with-childs', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent, CalendarModule, MultiSelectModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n<div class=\"custom-dropdown\" [ngClass]=\"setting('customClassMultiChild')\">\r\n <form [formGroup]=\"multiChildDropDownForm\" class=\"flex gap-4 w-full\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label-multi-child') }}\r\n </label>\r\n <p-multiSelect [options]=\"options\" formControlName=\"multipleChildSelectedOption\" [optionLabel]=\"setting('label-key-child')\"\r\n [placeholder]=\"setting('placeholderMultiChild')\" class=\"multiselect\">\r\n\r\n <!-- Custom Dropdown Icon -->\r\n <ng-template pTemplate=\"dropdownicon\">\r\n <div class=\"flex align-items-center dd_down_icon\">\r\n <span class=\"pi pi-angle-down text-xl\"></span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n <small\r\n *ngIf=\"multiChildDropDownForm.get('multipleChildSelectedOption')?.touched && multiChildDropDownForm.get('multipleChildSelectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('multiChildErrorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <!-- Other input -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('child-1-label') }}\r\n </label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"child1\"\r\n placeholder=\"{{ setting('child-1-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n >\r\n\r\n <small\r\n *ngIf=\"multiChildDropDownForm.get('child1')?.touched && multiChildDropDownForm.get('child1')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('child1ErrorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('child-2-label') }}\r\n </label>\r\n <input\r\n type=\"text\"\r\n formControlName=\"child2\"\r\n placeholder=\"{{ setting('child-2-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n >\r\n\r\n <small\r\n *ngIf=\"multiChildDropDownForm.get('child2')?.touched && multiChildDropDownForm.get('child2')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('child2ErrorMessage')}}\r\n </small>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n</fx-component>", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";::ng-deep .p-multiselect.p-component.p-inputwrapper{height:37.6px!important;border:1px solid #cdcdcd!important;width:100%!important}.dd_down_icon span{color:#f3a041}\n"] }]
146
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.FxBuilderWrapperService }, { type: i3.ApiServiceRegistry }], propDecorators: { fxComponent: [{
147
+ type: ViewChild,
148
+ args: ['fxComponent']
149
+ }] } });
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QtZHJvcGRvd24td2l0aC1jaGlsZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9tdWx0aXNlbGVjdC1kcm9wZG93bi13aXRoLWNoaWxkcy9tdWx0aXNlbGVjdC1kcm9wZG93bi13aXRoLWNoaWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBYSxlQUFlLEVBQUUsZUFBZSxFQUFvQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkssT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBU3hELE1BQU0sT0FBTyxzQ0FBdUMsU0FBUSxlQUFlO0lBaUJyRDtJQUFnQztJQUEwQjtJQUEwRDtJQWhCL0gsRUFBRSxHQUFHLE1B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YXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGeENvbXBvbmVudCwgRnhTZXR0aW5nLCBGeFN0cmluZ1NldHRpbmcsIEZ4U2VsZWN0U2V0dGluZywgRnhWYWxpZGF0aW9uLCBGeFZhbGlkYXRvclNlcnZpY2UsIEZ4QmFzZUNvbXBvbmVudCwgRnhPcHRpb25TZXR0aW5nIH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9meCc7XHJcbmltcG9ydCB7IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9jb3JlJ1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBNdWx0aVNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvbXVsdGlzZWxlY3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbXVsdGlzZWxlY3QtZHJvcGRvd24td2l0aC1jaGlsZHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIEZ4Q29tcG9uZW50LCBDYWxlbmRhck1vZHVsZSwgTXVsdGlTZWxlY3RNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXNlbGVjdC1kcm9wZG93bi13aXRoLWNoaWxkcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aXNlbGVjdERyb3Bkb3duV2l0aENoaWxkc0NvbXBvbmVudCBleHRlbmRzIEZ4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdHtcclxuICAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbiAgZm9ybU9iamVjdDogb2JqZWN0ID0ge307XHJcbiAgbXVsdGlDaGlsZERyb3Bkb3duTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICBAVmlld0NoaWxkKCdmeENvbXBvbmVudCcpIGZ4Q29tcG9uZW50ITogRnhDb21wb25lbnQ7XHJcbiBcclxuICBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgbXVsdGlDaGlsZERyb3BEb3duRm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICBtdWx0aXBsZUNoaWxkU2VsZWN0ZWRPcHRpb246IFtbXV0sXHJcbiAgICBjaGlsZDE6IFsnJ10sXHJcbiAgICBjaGlsZDI6IFsnJ10sXHJcbiAgICBjaGlsZDFMYWJlbDogWycnXSxcclxuICAgIGNoaWxkMkxhYmVsOiBbJyddLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBmeEJ1aWxkZXJXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UsIHByaXZhdGUgZnhBcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlUmVnaXN0cnkpIHtcclxuICAgIHN1cGVyKGNkcilcclxuICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3JlZ2lzdGVyKHRoaXMubXVsdGlDaGlsZERyb3BEb3duRm9ybSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNldHRpbmcoJ211bHRpQ2hpbGRPcHRpb25BUElVUkwnKSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ2l0ZW1zQ2hpbGRPcHRpb24nKSBhcyBhbnkpPy5vcHRpb25zIHx8IFtdO1xyXG4gICAgfVxyXG5cclxuICAgICBjb25zdCBjaGlsZDFMYWJlbENvbnRyb2wgPSB0aGlzLm11bHRpQ2hpbGREcm9wRG93bkZvcm0uZ2V0KCdjaGlsZDFMYWJlbCcpO1xyXG4gICAgIGNvbnN0IGNoaWxkMkxhYmVsQ29udHJvbCA9IHRoaXMubXVsdGlDaGlsZERyb3BEb3duRm9ybS5nZXQoJ2NoaWxkMkxhYmVsJyk7XHJcbiAgICAgIGNoaWxkMUxhYmVsQ29udHJvbD8uc2V0VmFsdWUodGhpcy5zZXR0aW5nKCdjaGlsZC0xLWxhYmVsJykpOyAgXHJcbiAgICAgIGNoaWxkMkxhYmVsQ29udHJvbD8uc2V0VmFsdWUodGhpcy5zZXR0aW5nKCdjaGlsZC0yLWxhYmVsJykpO1xyXG4gICAgICBjaGlsZDFMYWJlbENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgY2hpbGQyTGFiZWxDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7IFxyXG5cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qga2V5ID0gdGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5uYW1lO1xyXG5cclxuICAgICAgaWYgKGtleSAmJiB0aGlzLm11bHRpQ2hpbGREcm9wZG93bk1hcC5oYXMoa2V5KSkge1xyXG4gICAgICAgIHRoaXMubXVsdGlDaGlsZERyb3BEb3duRm9ybS5wYXRjaFZhbHVlKHRoaXMubXVsdGlDaGlsZERyb3Bkb3duTWFwLmdldChrZXkpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMjAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgbWFpbkNvbnRyb2wgPSB0aGlzLm11bHRpQ2hpbGREcm9wRG93bkZvcm0uZ2V0KCdtdWx0aXBsZUNoaWxkU2VsZWN0ZWRPcHRpb24nKTtcclxuICAgICAgY29uc3QgY2hpbGQxQ29udHJvbCA9IHRoaXMubXVsdGlDaGlsZERyb3BEb3duRm9ybS5nZXQoJ2NoaWxkMScpO1xyXG4gICAgICBjb25zdCBjaGlsZDJDb250cm9sID0gdGhpcy5tdWx0aUNoaWxkRHJvcERvd25Gb3JtLmdldCgnY2hpbGQyJyk7XHJcbiAgICAgIGlmICh0aGlzLnNldHRpbmcoJ2lzTXVsdGlDaGlsZFJlcXVpcmVkJykgPT09ICd0cnVlJykge1xyXG4gICAgICAgIG1haW5Db250cm9sPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgbWFpbkNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZXR0aW5nKCdpc0NoaWxkMVJlcXVpcmVkJykgPT09ICd0cnVlJykge1xyXG4gICAgICAgIGNoaWxkMUNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICBjaGlsZDFDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2V0dGluZygnaXNDaGlsZDJSZXF1aXJlZCcpID09PSAndHJ1ZScpIHtcclxuICAgICAgICBjaGlsZDJDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgY2hpbGQyQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDAwKVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG5cclxuICAgICAgICAvLyAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcclxuICAgICAgICAvLyAgICBpZiAoa2V5LmluY2x1ZGVzKCdkcm9wZG93bi13aXRoLW90aGVyJykpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5mb3JtT2JqZWN0ID0gdmFsdWU7XHJcbiAgICAgICAgLy8gICAgfVxyXG4gICAgICAgIC8vICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykgYXMgW3N0cmluZywgYW55XVtdKSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHZhbHVlICYmXHJcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgJ211bHRpcGxlQ2hpbGRTZWxlY3RlZE9wdGlvbicgaW4gdmFsdWVcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpQ2hpbGREcm9wZG93bk1hcC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSlcclxuXHJcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5meEFwaVNlcnZpY2UuZ2V0U2VydmljZVVybCh0aGlzLnNldHRpbmcoJ3NlcnZpY2VNdWx0aU5hbWUnKSk7XHJcbiAgICB0aGlzLmdldE9wdGlvbnMoc2VydmljZVVybCwgdGhpcy5zZXR0aW5nKCdtdWx0aUNoaWxkT3B0aW9uQVBJVVJMJykpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldHRpbmdzKCk6IEZ4U2V0dGluZ1tdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIG5ldyBGeE9wdGlvblNldHRpbmcoeyBrZXk6ICdpdGVtc0NoaWxkT3B0aW9uJywgJHRpdGxlOiAnT3B0aW9ucycsIHZhbHVlOiBbeyBvcHRpb246ICdZZXMnLCB2YWx1ZTogJ3llcycgfSwgeyBvcHRpb246ICdObycsIHZhbHVlOiAnbm8nIH1dIH0sIFt7IG9wdGlvbjogJ1llcycsIHZhbHVlOiAneWVzJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdubycgfV0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbXVsdGlDaGlsZE9wdGlvbkFQSVVSTCcsICR0aXRsZTogJ0FQSSBVcmwnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdjdXN0b21DbGFzc011bHRpQ2hpbGQnLCAkdGl0bGU6ICdDdXN0b20gQ2xhc3MgTmFtZScsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3NlbGVjdC1sYWJlbC1tdWx0aS1jaGlsZCcsICR0aXRsZTogJ0xhYmVsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbGFiZWwta2V5LWNoaWxkJywgJHRpdGxlOiAnTGFiZWwgS2V5JywgdmFsdWU6ICdvcHRpb24nIH0pLFxyXG4gICAgICBuZXcgRnhTZWxlY3RTZXR0aW5nKHsga2V5OiAnc2VydmljZU11bHRpTmFtZScsICR0aXRsZTogJ1NlcnZpY2UnLCB2YWx1ZTogJycgfSwgW3sgb3B0aW9uOiAnVXNlciBTZXJ2aWNlJywgdmFsdWU6ICd1c2VyX3NlcnZpY2UnIH0sIHsgb3B0aW9uOiAnUGF0aWVudCBTZXJ2aWNlJywgdmFsdWU6ICdwYXRpZW50X3NlcnZpY2UnIH0sIHsgb3B0aW9uOiAnV29ya2Zsb3cgU2VydmljZScsIHZhbHVlOiAnd29ya2Zsb3dfc2VydmljZScgfV0pLFxyXG4gICAgICBuZXcgRnhTZWxlY3RTZXR0aW5nKHsga2V5OiAnaXNNdWx0aUNoaWxkUmVxdWlyZWQnLCAkdGl0bGU6ICdSZXF1aXJlZCcsIHZhbHVlOiAndHJ1ZScgfSwgW3sgb3B0aW9uOiAnWWVzJywgdmFsdWU6ICd0cnVlJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdmYWxzZScgfV0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbXVsdGlDaGlsZEVycm9yTWVzc2FnZScsICR0aXRsZTogJ0Vycm9yIE1lc3NhZ2UnLCB2YWx1ZTogJ1BsZWFzZSBzZWxlY3QnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAncGxhY2Vob2xkZXJNdWx0aUNoaWxkJywgJHRpdGxlOiAnUGxhY2Vob2xkZXInLCB2YWx1ZTogJ1NlbGVjdCcgfSksXHJcblxyXG4gICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2NoaWxkLTEtbGFiZWwnLCAkdGl0bGU6ICdDaGlsZCAxIExhYmVsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2NoaWxkLTEtcGxhY2Vob2xkZXInLCAkdGl0bGU6ICdDaGlsZCAxIFBsYWNlaG9sZGVyJywgdmFsdWU6ICdlbnRlciBoZXJlJyB9KSxcclxuICAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoeyBrZXk6ICdpc0NoaWxkMVJlcXVpcmVkJywgJHRpdGxlOiAnUmVxdWlyZWQnLCB2YWx1ZTogJ3RydWUnIH0sIFt7IG9wdGlvbjogJ1llcycsIHZhbHVlOiAndHJ1ZScgfSwgeyBvcHRpb246ICdObycsIHZhbHVlOiAnZmFsc2UnIH1dKSxcclxuICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdjaGlsZDFFcnJvck1lc3NhZ2UnLCAkdGl0bGU6ICdFcnJvciBNZXNzYWdlJywgdmFsdWU6ICdQbGVhc2UgZmlsbCBvdXQgdGhlIGZpZWxkJyB9KSxcclxuXHJcbiAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2NoaWxkLTItbGFiZWwnLCAkdGl0bGU6ICdDaGlsZCAyIExhYmVsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdjaGlsZC0yLXBsYWNlaG9sZGVyJywgJHRpdGxlOiAnQ2hpbGQgMiBQbGFjZWhvbGRlcicsIHZhbHVlOiAnZW50ZXIgaGVyZScgfSksXHJcbiAgICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7IGtleTogJ2lzQ2hpbGQyUmVxdWlyZWQnLCAkdGl0bGU6ICdSZXF1aXJlZCcsIHZhbHVlOiAndHJ1ZScgfSwgW3sgb3B0aW9uOiAnWWVzJywgdmFsdWU6ICd0cnVlJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdmYWxzZScgfV0pLFxyXG4gICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdjaGlsZDJFcnJvck1lc3NhZ2UnLCAkdGl0bGU6ICdFcnJvciBNZXNzYWdlJywgdmFsdWU6ICdQbGVhc2UgZmlsbCBvdXQgdGhlIGZpZWxkJyB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucyhzZXJ2aWNlVXJsOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIGNvbnN0IGZpbmFsVXJsID0gc2VydmljZVVybCArIHVybDtcclxuICAgICAgdGhpcy5odHRwLmdldDxhbnlbXT4oZmluYWxVcmwpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlPy5kYXRhO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9wdGlvbnMnLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ2l0ZW1zQ2hpbGRPcHRpb24nKSBhcyBhbnkpPy5vcHRpb25zIHx8IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiICNmeENvbXBvbmVudD5cclxuPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiIFtuZ0NsYXNzXT1cInNldHRpbmcoJ2N1c3RvbUNsYXNzTXVsdGlDaGlsZCcpXCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJtdWx0aUNoaWxkRHJvcERvd25Gb3JtXCIgY2xhc3M9XCJmbGV4IGdhcC00IHctZnVsbFwiPlxyXG4gICAgXHJcbiAgICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gICA8ZGl2IGNsYXNzPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZGFyazp0ZXh0LWdyYXktMzAwXCI+XHJcbiAgICAgICAgICB7eyBzZXR0aW5nKCdzZWxlY3QtbGFiZWwtbXVsdGktY2hpbGQnKSB9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwib3B0aW9uc1wiIGZvcm1Db250cm9sTmFtZT1cIm11bHRpcGxlQ2hpbGRTZWxlY3RlZE9wdGlvblwiIFtvcHRpb25MYWJlbF09XCJzZXR0aW5nKCdsYWJlbC1rZXktY2hpbGQnKVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2V0dGluZygncGxhY2Vob2xkZXJNdWx0aUNoaWxkJylcIiBjbGFzcz1cIm11bHRpc2VsZWN0XCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBDdXN0b20gRHJvcGRvd24gSWNvbiAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkcm9wZG93bmljb25cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGRkX2Rvd25faWNvblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtZG93biB0ZXh0LXhsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgIDxzbWFsbFxyXG4gICAgICAgICAgKm5nSWY9XCJtdWx0aUNoaWxkRHJvcERvd25Gb3JtLmdldCgnbXVsdGlwbGVDaGlsZFNlbGVjdGVkT3B0aW9uJyk/LnRvdWNoZWQgJiYgbXVsdGlDaGlsZERyb3BEb3duRm9ybS5nZXQoJ211bHRpcGxlQ2hpbGRTZWxlY3RlZE9wdGlvbicpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMFwiPlxyXG4gICAgICAgICAge3sgc2V0dGluZygnbXVsdGlDaGlsZEVycm9yTWVzc2FnZScpfX1cclxuICAgICAgICA8L3NtYWxsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE90aGVyIGlucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtMSByZWxhdGl2ZVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbCBkYXJrOnRleHQtZ3JheS0zMDBcIj5cclxuICAgICAgICB7eyBzZXR0aW5nKCdjaGlsZC0xLWxhYmVsJykgfX1cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNoaWxkMVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBzZXR0aW5nKCdjaGlsZC0xLXBsYWNlaG9sZGVyJykgfX1cIlxyXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyIHAtMiByb3VuZGVkIHctZnVsbFwiXHJcbiAgICAgICAgcm93cz1cIjJcIlxyXG4gICAgICA+XHJcblxyXG4gICAgICA8c21hbGxcclxuICAgICAgICAqbmdJZj1cIm11bHRpQ2hpbGREcm9wRG93bkZvcm0uZ2V0KCdjaGlsZDEnKT8udG91Y2hlZCAmJiBtdWx0aUNoaWxkRHJvcERvd25Gb3JtLmdldCgnY2hpbGQxJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXCJcclxuICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzZXR0aW5nKCdjaGlsZDFFcnJvck1lc3NhZ2UnKX19XHJcbiAgICAgIDwvc21hbGw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIHJlbGF0aXZlXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImlucHV0LWxhYmVsIGRhcms6dGV4dC1ncmF5LTMwMFwiPlxyXG4gICAgICAgIHt7IHNldHRpbmcoJ2NoaWxkLTItbGFiZWwnKSB9fVxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2hpbGQyXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHNldHRpbmcoJ2NoaWxkLTItcGxhY2Vob2xkZXInKSB9fVwiXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0yIHJvdW5kZWQgdy1mdWxsXCJcclxuICAgICAgICByb3dzPVwiMlwiXHJcbiAgICAgID5cclxuXHJcbiAgICAgIDxzbWFsbFxyXG4gICAgICAgICpuZ0lmPVwibXVsdGlDaGlsZERyb3BEb3duRm9ybS5nZXQoJ2NoaWxkMicpPy50b3VjaGVkICYmIG11bHRpQ2hpbGREcm9wRG93bkZvcm0uZ2V0KCdjaGlsZDInKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHNldHRpbmcoJ2NoaWxkMkVycm9yTWVzc2FnZScpfX1cclxuICAgICAgPC9zbWFsbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG48L2Z4LWNvbXBvbmVudD4iXX0=