bpm-core 0.0.18 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/app/app.component.mjs +22 -12
  2. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +10 -8
  3. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +5 -3
  4. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +8 -5
  5. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +4 -4
  6. package/esm2022/lib/i18n/en.mjs +2 -1
  7. package/esm2022/lib/interfaces/form.interface.mjs +1 -1
  8. package/esm2022/lib/services/core.service.ts.mjs +299 -168
  9. package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +8 -0
  10. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +52 -0
  11. package/esm2022/lib/testComponent/services/i18n.service.mjs +39 -0
  12. package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +54 -0
  13. package/esm2022/lib/testComponent/services/state-machine.service.mjs +148 -0
  14. package/fesm2022/bpm-core.mjs +4779 -4353
  15. package/fesm2022/bpm-core.mjs.map +1 -1
  16. package/lib/app/app.component.d.ts +4 -2
  17. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +1 -1
  18. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +4 -4
  19. package/lib/i18n/en.d.ts +1 -0
  20. package/lib/interfaces/form.interface.d.ts +2 -2
  21. package/lib/services/core.service.ts.d.ts +1 -0
  22. package/lib/testComponent/config/segment-dynamic-loader.config.d.ts +8 -0
  23. package/lib/testComponent/general-approver-section/general-approver-section.component.d.ts +21 -0
  24. package/lib/testComponent/services/i18n.service.d.ts +11 -0
  25. package/lib/testComponent/services/segment-dynamic-loader.service.d.ts +17 -0
  26. package/lib/testComponent/services/state-machine.service.d.ts +29 -0
  27. package/package.json +2 -2
@@ -0,0 +1,8 @@
1
+ import { GeneralApproverSectionComponent } from "../general-approver-section/general-approver-section.component";
2
+ export default {
3
+ roleToApprovalSectionMapping: {
4
+ wpo_d: GeneralApproverSectionComponent,
5
+ wpo_gm: GeneralApproverSectionComponent
6
+ }
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1keW5hbWljLWxvYWRlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL3Rlc3RDb21wb25lbnQvY29uZmlnL3NlZ21lbnQtZHluYW1pYy1sb2FkZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBRy9HLGVBQWU7SUFDYiw0QkFBNEIsRUFBRTtRQUM1QixLQUFLLEVBQUUsK0JBQStCO1FBQ3RDLE1BQU0sRUFBRSwrQkFBK0I7S0FDeEM7Q0FDRixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtHZW5lcmFsQXBwcm92ZXJTZWN0aW9uQ29tcG9uZW50fSBmcm9tIFwiLi4vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uL2dlbmVyYWwtYXBwcm92ZXItc2VjdGlvbi5jb21wb25lbnRcIjtcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgcm9sZVRvQXBwcm92YWxTZWN0aW9uTWFwcGluZzoge1xyXG4gICAgd3BvX2Q6IEdlbmVyYWxBcHByb3ZlclNlY3Rpb25Db21wb25lbnQsXHJcbiAgICB3cG9fZ206IEdlbmVyYWxBcHByb3ZlclNlY3Rpb25Db21wb25lbnRcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,52 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { NgClass } from "@angular/common";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/i18n.service";
5
+ import * as i2 from "../services/state-machine.service";
6
+ export class GeneralApproverSectionComponent {
7
+ i18n;
8
+ StateMachineService;
9
+ isReadOnly;
10
+ section;
11
+ lov;
12
+ className = "info-section";
13
+ currentSectionId;
14
+ lastSectionId;
15
+ form;
16
+ constructor(i18n,
17
+ // public profileRequestorService: ProfileRequestorService,
18
+ StateMachineService) {
19
+ this.i18n = i18n;
20
+ this.StateMachineService = StateMachineService;
21
+ }
22
+ ngAfterViewInit() {
23
+ this.ServicesSubScriptions();
24
+ }
25
+ ServicesSubScriptions() {
26
+ /* this.profileRequestorService.getForm().subscribe(data => {
27
+ this.form = data;
28
+ this.lastSectionId = this.form.sections[this.form.sections.length - 1].id;
29
+ this.currentSectionId = this.section.id;
30
+ });*/
31
+ }
32
+ handleEmitValue(data, fieldName) {
33
+ this.section.body.details[fieldName] = data;
34
+ }
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: GeneralApproverSectionComponent, deps: [{ token: i1.I18nService }, { token: i2.StateMachineService }], target: i0.ɵɵFactoryTarget.Component });
36
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: GeneralApproverSectionComponent, isStandalone: true, selector: "app-general-approver-section", inputs: { isReadOnly: "isReadOnly", section: "section", lov: "lov", className: "className" }, ngImport: i0, template: "<div\r\n [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\">\r\n <ds-alert class=\"full\" type=\"warning\" icon=\"info\">\r\n\r\n <div class=\"d-flex gap-2\">\r\n General Approval working fine\r\n </div>\r\n\r\n </ds-alert>\r\n\r\n\r\n</div>\r\n\r\n\r\n<!--<div class=\"mt-4\" *ngIf=\"!section?.header?.readOnly\">\r\n\r\n <div class=\"d-flex align-items-center gap-3\" *ngIf=\"lov?.decision?.type === 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n <ng-container *ngFor=\"let item of lov?.decision?.options\">\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SUBMIT'\">{{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'APPROVE'\">{{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'REJECT'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'CANCEL'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SENDBACK'\">\r\n {{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"!(item?.value === 'SUBMIT' || item?.value === 'APPROVE' || item?.value === 'SENDBACK' || item?.value === 'REJECT' || item?.value === 'CANCEL')\">{{item?.description}}</ds-button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 justify-content-end gap-3\"\r\n *ngIf=\"lov?.decision?.type !== 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm('SUBMIT')}\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n (click)=\"onSubmit('SUBMIT') || profileRequestorService.disableButtons\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n </div>\r\n</div>-->\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: GeneralApproverSectionComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'app-general-approver-section', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], imports: [
41
+ NgClass
42
+ ], template: "<div\r\n [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\">\r\n <ds-alert class=\"full\" type=\"warning\" icon=\"info\">\r\n\r\n <div class=\"d-flex gap-2\">\r\n General Approval working fine\r\n </div>\r\n\r\n </ds-alert>\r\n\r\n\r\n</div>\r\n\r\n\r\n<!--<div class=\"mt-4\" *ngIf=\"!section?.header?.readOnly\">\r\n\r\n <div class=\"d-flex align-items-center gap-3\" *ngIf=\"lov?.decision?.type === 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n <ng-container *ngFor=\"let item of lov?.decision?.options\">\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SUBMIT'\">{{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'APPROVE'\">{{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'REJECT'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'CANCEL'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SENDBACK'\">\r\n {{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"!(item?.value === 'SUBMIT' || item?.value === 'APPROVE' || item?.value === 'SENDBACK' || item?.value === 'REJECT' || item?.value === 'CANCEL')\">{{item?.description}}</ds-button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 justify-content-end gap-3\"\r\n *ngIf=\"lov?.decision?.type !== 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm('SUBMIT')}\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n (click)=\"onSubmit('SUBMIT') || profileRequestorService.disableButtons\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n </div>\r\n</div>-->\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}\n"] }]
43
+ }], ctorParameters: () => [{ type: i1.I18nService }, { type: i2.StateMachineService }], propDecorators: { isReadOnly: [{
44
+ type: Input
45
+ }], section: [{
46
+ type: Input
47
+ }], lov: [{
48
+ type: Input
49
+ }], className: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSXpGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVl4QyxNQUFNLE9BQU8sK0JBQStCO0lBWXZCO0lBRUE7SUFaVixVQUFVLENBQVU7SUFDcEIsT0FBTyxDQUFVO0lBQ2pCLEdBQUcsQ0FBTTtJQUNULFNBQVMsR0FBVyxjQUFjLENBQUM7SUFHNUMsZ0JBQWdCLENBQVM7SUFDekIsYUFBYSxDQUFTO0lBQ3RCLElBQUksQ0FBTztJQUVYLFlBQW1CLElBQWlCO0lBQ3hCLDJEQUEyRDtJQUNwRCxtQkFBd0M7UUFGeEMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUVqQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBSTNELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLHFCQUFxQjtRQUM5Qjs7OztpQkFJUztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUyxFQUFFLFNBQWlCO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDOUMsQ0FBQzt1R0FsQ1UsK0JBQStCOzJGQUEvQiwrQkFBK0Isc0xDaEI1QywyaEhBNkRBLG95QkRoREksT0FBTzs7MkZBR0UsK0JBQStCO2tCQVYzQyxTQUFTOytCQUNFLDhCQUE4QixjQUc1QixJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxXQUMxQzt3QkFDUCxPQUFPO3FCQUNSO2tIQUlRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0LCBOT19FUlJPUlNfU0NIRU1BfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJMThuU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvaTE4bi5zZXJ2aWNlJztcclxuaW1wb3J0IHtTdGF0ZU1hY2hpbmVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9zdGF0ZS1tYWNoaW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zvcm0sIFNlY3Rpb259IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7TmdDbGFzc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJhbEFwcHJvdmVyU2VjdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbjtcclxuICBASW5wdXQoKSBsb3Y6IGFueTtcclxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZyA9IFwiaW5mby1zZWN0aW9uXCI7XHJcblxyXG5cclxuICBjdXJyZW50U2VjdGlvbklkOiBzdHJpbmc7XHJcbiAgbGFzdFNlY3Rpb25JZDogc3RyaW5nO1xyXG4gIGZvcm06IEZvcm07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBJMThuU2VydmljZSxcclxuICAgICAgICAgICAgICAvLyBwdWJsaWMgcHJvZmlsZVJlcXVlc3RvclNlcnZpY2U6IFByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBTdGF0ZU1hY2hpbmVTZXJ2aWNlOiBTdGF0ZU1hY2hpbmVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIC8vIHB1YmxpYyBfbGlzdGVuZXJTZXJ2aWNlOiBMaXN0ZW5lclNlcnZpY2UsXHJcbiAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5TZXJ2aWNlc1N1YlNjcmlwdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZXJ2aWNlc1N1YlNjcmlwdGlvbnMoKSB7XHJcbi8qICAgIHRoaXMucHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuZ2V0Rm9ybSgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5mb3JtID0gZGF0YTtcclxuICAgICAgdGhpcy5sYXN0U2VjdGlvbklkID0gdGhpcy5mb3JtLnNlY3Rpb25zW3RoaXMuZm9ybS5zZWN0aW9ucy5sZW5ndGggLSAxXS5pZDtcclxuICAgICAgdGhpcy5jdXJyZW50U2VjdGlvbklkID0gdGhpcy5zZWN0aW9uLmlkO1xyXG4gICAgfSk7Ki9cclxuICB9XHJcblxyXG4gIGhhbmRsZUVtaXRWYWx1ZShkYXRhOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzW2ZpZWxkTmFtZV0gPSBkYXRhO1xyXG4gIH1cclxuXHJcblxyXG4vKiAgdmFsaWRGb3JtKGFjdGlvbikge1xyXG4gICAgbGV0IHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGxhc3RTZWN0aW9uID0gdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlsc1xyXG4gICAgbGV0IGNvbW1lbnRWYWxpZDtcclxuICAgIGlmIChsYXN0U2VjdGlvbi5jb21tZW50ICYmIGxhc3RTZWN0aW9uLmNvbW1lbnQubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgbGFzdFNlY3Rpb24uY29tbWVudC5sZW5ndGggPj0gMSAmJlxyXG4gICAgICAgIGxhc3RTZWN0aW9uLmNvbW1lbnQubGVuZ3RoIDw9IDIwMDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29tbWVudFZhbGlkID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb21tZW50VmFsaWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tbWVudFZhbGlkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ1NVQk1JVCc6XHJcbiAgICAgICAgLy8gaWYgKGxhc3RTZWN0aW9uSWQgPT0gJ3JlcXVlc3REZXRhaWxzJykge1xyXG4gICAgICAgIC8vICAgLyEqIGVtcHR5ICohL1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ0FQUFJPVkUnOlxyXG4gICAgICAgIGlmIChjb21tZW50VmFsaWQpIHtcclxuICAgICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1JFSkVDVCc6XHJcbiAgICAgICAgaWYgKGxhc3RTZWN0aW9uLmNvbW1lbnQgJiYgY29tbWVudFZhbGlkKSB7XHJcbiAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdTRU5EQkFDSyc6XHJcbiAgICAgICAgaWYgKGxhc3RTZWN0aW9uLmNvbW1lbnQgJiYgY29tbWVudFZhbGlkKSB7XHJcbiAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdTQVZFX0NIQU5HRVMnOlxyXG4gICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQ0FOQ0VMJzpcclxuICAgICAgICBpZiAobGFzdFNlY3Rpb24uY29tbWVudCAmJiBjb21tZW50VmFsaWQpIHtcclxuICAgICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1NFTkRUT0RPJzpcclxuICAgICAgICByZXR1cm5WYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KGFjdGlvbjogYW55KSB7XHJcbiAgICBpZiAodGhpcy52YWxpZEZvcm0oYWN0aW9uKSkge1xyXG4gICAgICB0aGlzLnByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbYWN0aW9uXSA9IHRydWU7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICBmdW5jdGlvbjogJ29uU3VibWl0JyxcclxuICAgICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgICBkYXRhOiB0aGlzLnNlY3Rpb25cclxuICAgICAgfTtcclxuICAgICAgdGhpcy5fbGlzdGVuZXJTZXJ2aWNlLmZpbHRlcihvYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCkge1xyXG4gICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICBmdW5jdGlvbjogJ3Jlc2V0Rm9ybSdcclxuICAgIH07XHJcbiAgICB0aGlzLl9saXN0ZW5lclNlcnZpY2UuZmlsdGVyKG9iaik7XHJcbiAgfSovXHJcbn1cclxuIiwiPGRpdlxyXG4gIFtuZ0NsYXNzXT1cInsnZm9ybS1zZWN0aW9uLWRpdmlkZSBmb3JtLXNlY3Rpb24nOiFzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5LCdpbmZvLXNlY3Rpb24nOnNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHl9XCI+XHJcbiAgPGRzLWFsZXJ0IGNsYXNzPVwiZnVsbFwiIHR5cGU9XCJ3YXJuaW5nXCIgaWNvbj1cImluZm9cIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgIEdlbmVyYWwgQXBwcm92YWwgd29ya2luZyBmaW5lXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kcy1hbGVydD5cclxuXHJcblxyXG48L2Rpdj5cclxuXHJcblxyXG48IS0tPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIiFzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCIgKm5nSWY9XCJsb3Y/LmRlY2lzaW9uPy50eXBlID09PSAnYnV0dG9uJ1wiPlxyXG4gICAgPGRzLWJ1dHRvbiBzaGFwZT1cInRleHRcIiBjb2xvcj1cInJlZFwiIChjbGljayk9XCJyZXNldEZvcm0oKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bVwiPnt7aTE4bi50cmFuc2xhdGUoJ3Jlc2V0Jyl9fTwvc3Bhbj5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtZ3Jvdy0xIGZsZXgtcm93LXJldmVyc2UgZ2FwLTNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb3Y/LmRlY2lzaW9uPy5vcHRpb25zXCI+XHJcbiAgICAgICAgPGRzLWJ1dHRvbiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohdmFsaWRGb3JtKGl0ZW0/LnZhbHVlKSB8fCBwcm9maWxlUmVxdWVzdG9yU2VydmljZS5kaXNhYmxlQnV0dG9uc31cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KGl0ZW0/LnZhbHVlKSBcIiBbbG9hZGluZ109XCJwcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbaXRlbT8udmFsdWVdXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXRlbT8udmFsdWUgPT09ICdTVUJNSVQnXCI+e3tpdGVtPy5kZXNjcmlwdGlvbn19PC9kcy1idXR0b24+XHJcblxyXG4gICAgICAgIDxkcy1idXR0b24gW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IXZhbGlkRm9ybShpdGVtPy52YWx1ZSkgfHwgcHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuZGlzYWJsZUJ1dHRvbnN9XCJcclxuICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdChpdGVtPy52YWx1ZSkgXCIgW2xvYWRpbmddPVwicHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuaXNTdWJtaXR0aW5nW2l0ZW0/LnZhbHVlXVwiXHJcbiAgICAgICAgICAqbmdJZj1cIml0ZW0/LnZhbHVlID09PSAnQVBQUk9WRSdcIj57e2l0ZW0/LmRlc2NyaXB0aW9ufX08L2RzLWJ1dHRvbj5cclxuICAgICAgICA8ZHMtYnV0dG9uIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiF2YWxpZEZvcm0oaXRlbT8udmFsdWUpIHx8IHByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoaXRlbT8udmFsdWUpXCIgc2hhcGU9XCJvdXRsaW5lXCIgY29sb3I9XCJyZWRcIlxyXG4gICAgICAgICAgW2xvYWRpbmddPVwicHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuaXNTdWJtaXR0aW5nW2l0ZW0/LnZhbHVlXVwiICpuZ0lmPVwiaXRlbT8udmFsdWUgPT09ICdSRUpFQ1QnXCI+XHJcbiAgICAgICAgICB7e2l0ZW0/LmRlc2NyaXB0aW9ufX08L2RzLWJ1dHRvbj5cclxuICAgICAgICA8ZHMtYnV0dG9uIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiF2YWxpZEZvcm0oaXRlbT8udmFsdWUpIHx8IHByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoaXRlbT8udmFsdWUpXCIgc2hhcGU9XCJvdXRsaW5lXCIgY29sb3I9XCJyZWRcIlxyXG4gICAgICAgICAgW2xvYWRpbmddPVwicHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuaXNTdWJtaXR0aW5nW2l0ZW0/LnZhbHVlXVwiICpuZ0lmPVwiaXRlbT8udmFsdWUgPT09ICdDQU5DRUwnXCI+XHJcbiAgICAgICAgICB7e2l0ZW0/LmRlc2NyaXB0aW9ufX08L2RzLWJ1dHRvbj5cclxuICAgICAgICA8ZHMtYnV0dG9uIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiF2YWxpZEZvcm0oaXRlbT8udmFsdWUpIHx8IHByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoaXRlbT8udmFsdWUpXCIgc2hhcGU9XCJvdXRsaW5lXCIgW2xvYWRpbmddPVwicHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuaXNTdWJtaXR0aW5nW2l0ZW0/LnZhbHVlXVwiXHJcbiAgICAgICAgICAqbmdJZj1cIml0ZW0/LnZhbHVlID09PSAnU0VOREJBQ0snXCI+XHJcbiAgICAgICAgICB7e2l0ZW0/LmRlc2NyaXB0aW9ufX08L2RzLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGRzLWJ1dHRvbiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohdmFsaWRGb3JtKGl0ZW0/LnZhbHVlKSB8fCBwcm9maWxlUmVxdWVzdG9yU2VydmljZS5kaXNhYmxlQnV0dG9uc31cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KGl0ZW0/LnZhbHVlKSBcIiBbbG9hZGluZ109XCJwcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbaXRlbT8udmFsdWVdXCJcclxuICAgICAgICAgICpuZ0lmPVwiIShpdGVtPy52YWx1ZSA9PT0gJ1NVQk1JVCcgfHwgaXRlbT8udmFsdWUgPT09ICdBUFBST1ZFJyB8fCBpdGVtPy52YWx1ZSA9PT0gJ1NFTkRCQUNLJyB8fCBpdGVtPy52YWx1ZSA9PT0gJ1JFSkVDVCcgfHwgaXRlbT8udmFsdWUgPT09ICdDQU5DRUwnKVwiPnt7aXRlbT8uZGVzY3JpcHRpb259fTwvZHMtYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1ncm93LTEganVzdGlmeS1jb250ZW50LWVuZCBnYXAtM1wiXHJcbiAgICAqbmdJZj1cImxvdj8uZGVjaXNpb24/LnR5cGUgIT09ICdidXR0b24nXCI+XHJcbiAgICA8ZHMtYnV0dG9uIHNoYXBlPVwidGV4dFwiIGNvbG9yPVwicmVkXCIgKGNsaWNrKT1cInJlc2V0Rm9ybSgpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTYgZnctbWVkaXVtXCI+e3tpMThuLnRyYW5zbGF0ZSgncmVzZXQnKX19PC9zcGFuPlxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgICA8ZHMtYnV0dG9uIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiF2YWxpZEZvcm0oJ1NVQk1JVCcpfVwiXHJcbiAgICAgIFtsb2FkaW5nXT1cInByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmlzU3VibWl0dGluZ1tpdGVtPy52YWx1ZV1cIlxyXG4gICAgICAoY2xpY2spPVwib25TdWJtaXQoJ1NVQk1JVCcpIHx8IHByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zXCI+XHJcbiAgICAgIHt7aTE4bi50cmFuc2xhdGUoJ3N1Ym1pdCcpfX1cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4tLT5cclxuIl19
@@ -0,0 +1,39 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as en from '../../i18n/en';
3
+ import * as ar from '../../i18n/ar';
4
+ import * as i0 from "@angular/core";
5
+ export class I18nService {
6
+ locales;
7
+ coreLocales;
8
+ language;
9
+ constructor() {
10
+ // this.language = (window as any).wmConfig.language;
11
+ this.language = "en";
12
+ this.locales = { en: en.default, ar: ar.default };
13
+ }
14
+ translate(key) {
15
+ let result = null;
16
+ try {
17
+ result = this.coreLocales[this.language][key];
18
+ if (!result) {
19
+ result = this.locales[this.language][key];
20
+ }
21
+ }
22
+ catch (e) {
23
+ result = null;
24
+ }
25
+ return result || key;
26
+ }
27
+ getLanguage() {
28
+ return this.language;
29
+ }
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: I18nService, providedIn: 'any' });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: I18nService, decorators: [{
34
+ type: Injectable,
35
+ args: [{
36
+ providedIn: 'any',
37
+ }]
38
+ }], ctorParameters: () => [] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi90ZXN0Q29tcG9uZW50L3NlcnZpY2VzL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtwQyxNQUFNLE9BQU8sV0FBVztJQUNkLE9BQU8sQ0FBMkM7SUFDbEQsV0FBVyxDQUEyQztJQUN0RCxRQUFRLENBQVU7SUFFMUI7UUFDRSxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFHO1FBQ1gsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTSxDQUFDLEVBQUUsQ0FBQztZQUNSLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO3VHQTNCVSxXQUFXOzJHQUFYLFdBQVcsY0FGUixLQUFLOzsyRkFFUixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxLQUFLO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZW4gZnJvbSAnLi4vLi4vaTE4bi9lbic7XHJcbmltcG9ydCAqIGFzIGFyIGZyb20gJy4uLy4uL2kxOG4vYXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ2FueScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBsb2NhbGVzOiB7W2tleTogc3RyaW5nXToge1trZXk6IHN0cmluZ106IHN0cmluZ319O1xyXG4gIHByaXZhdGUgY29yZUxvY2FsZXM6IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfX07XHJcbiAgcHJpdmF0ZSBsYW5ndWFnZSA6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyB0aGlzLmxhbmd1YWdlID0gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLmxhbmd1YWdlO1xyXG4gICAgdGhpcy5sYW5ndWFnZSA9IFwiZW5cIjtcclxuICAgIHRoaXMubG9jYWxlcyA9IHtlbjogZW4uZGVmYXVsdCwgYXI6IGFyLmRlZmF1bHR9O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNsYXRlKGtleSkge1xyXG4gICAgbGV0IHJlc3VsdCA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXN1bHQgPSB0aGlzLmNvcmVMb2NhbGVzW3RoaXMubGFuZ3VhZ2VdW2tleV07XHJcbiAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5sb2NhbGVzW3RoaXMubGFuZ3VhZ2VdW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoKGUpIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQgfHwga2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFuZ3VhZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,54 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as Constants from '../../constants';
3
+ import { RequestDetailsSectionComponent } from "../request-details-section/request-details-section.component";
4
+ import segmentDynamicLoaderConfiguration from '../config/segment-dynamic-loader.config';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./i18n.service";
7
+ export class SegmentDynamicLoaderService {
8
+ i18n;
9
+ requestDetailsSection = RequestDetailsSectionComponent;
10
+ roleToApprovalSectionMapping = segmentDynamicLoaderConfiguration.roleToApprovalSectionMapping;
11
+ constructor(i18n) {
12
+ this.i18n = i18n;
13
+ }
14
+ getComponent(componentId) {
15
+ if (componentId.toLowerCase() === Constants.SECTION_ID_REQUEST_DETAILS.toLowerCase()) {
16
+ return this.requestDetailsSection;
17
+ }
18
+ let role = componentId.toLowerCase().split(Constants.SECTION_ID_APPROVAL_PARTIAL_NAME.toLowerCase())[0].toLowerCase();
19
+ return this.roleToApprovalSectionMapping[role];
20
+ }
21
+ getSectionName(componentId) {
22
+ if (componentId.toLowerCase() === Constants.SECTION_ID_REQUEST_DETAILS.toLowerCase()) {
23
+ return this.i18n.translate('requestDetailsTitle');
24
+ }
25
+ else if (componentId.toLowerCase() === 'hrRequestDetails'.toLowerCase()) {
26
+ return this.i18n.translate('hrRequestDetailsTitle');
27
+ }
28
+ let role = componentId.toLowerCase().split(Constants.SECTION_ID_APPROVAL_PARTIAL_NAME.toLowerCase())[0].toLowerCase();
29
+ return this.i18n.translate(`${role.toLowerCase()}Role`);
30
+ }
31
+ getPrintPartialName(componentName) {
32
+ if (componentName === Constants.SECTION_ID_REQUEST_DETAILS) {
33
+ return 'sectionrequestDetails';
34
+ }
35
+ else if (componentName === 'wpo_dApproval') {
36
+ return 'sectionGeneralApprover';
37
+ }
38
+ else if (componentName === 'wpo_gmApproval') {
39
+ return 'sectionGeneralApprover';
40
+ }
41
+ else {
42
+ return 'sectionGeneralApproval';
43
+ }
44
+ }
45
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SegmentDynamicLoaderService, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Injectable });
46
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SegmentDynamicLoaderService, providedIn: 'any' });
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SegmentDynamicLoaderService, decorators: [{
49
+ type: Injectable,
50
+ args: [{
51
+ providedIn: 'any',
52
+ }]
53
+ }], ctorParameters: () => [{ type: i1.I18nService }] });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1keW5hbWljLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi90ZXN0Q29tcG9uZW50L3NlcnZpY2VzL3NlZ21lbnQtZHluYW1pYy1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxTQUFTLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sOERBQThELENBQUM7QUFDNUcsT0FBTyxpQ0FBaUMsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBS3hGLE1BQU0sT0FBTywyQkFBMkI7SUFJbEI7SUFIcEIscUJBQXFCLEdBQUcsOEJBQThCLENBQUM7SUFDdkQsNEJBQTRCLEdBQUcsaUNBQWlDLENBQUMsNEJBQTRCLENBQUM7SUFFOUYsWUFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUVyQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFdBQW1CO1FBQzlCLElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RILE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjLENBQUMsV0FBbUI7UUFDaEMsSUFBRyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssU0FBUyxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDcEYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BELENBQUM7YUFDSSxJQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZ0NBQWdDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsbUJBQW1CLENBQUUsYUFBcUI7UUFJeEMsSUFBSSxhQUFhLEtBQUssU0FBUyxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDM0QsT0FBTyx1QkFBdUIsQ0FBQztRQUNqQyxDQUFDO2FBQ0ksSUFBSSxhQUFhLEtBQUssZUFBZSxFQUFJLENBQUM7WUFBRSxPQUFPLHdCQUF3QixDQUFBO1FBQUEsQ0FBQzthQUN0RSxJQUFJLGFBQWEsS0FBSyxnQkFBZ0IsRUFBSSxDQUFDO1lBQUUsT0FBTyx3QkFBd0IsQ0FBQTtRQUFBLENBQUM7YUFFbkYsQ0FBQztZQUFDLE9BQU8sd0JBQXdCLENBQUE7UUFBQyxDQUFDO0lBRTFDLENBQUM7dUdBdkNVLDJCQUEyQjsyR0FBM0IsMkJBQTJCLGNBRnhCLEtBQUs7OzJGQUVSLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsS0FBSztpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIENvbnN0YW50cyBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4vaTE4bi5zZXJ2aWNlJztcclxuaW1wb3J0IHtSZXF1ZXN0RGV0YWlsc1NlY3Rpb25Db21wb25lbnR9IGZyb20gXCIuLi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHNlZ21lbnREeW5hbWljTG9hZGVyQ29uZmlndXJhdGlvbiBmcm9tICcuLi9jb25maWcvc2VnbWVudC1keW5hbWljLWxvYWRlci5jb25maWcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ2FueScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2Uge1xyXG4gIHJlcXVlc3REZXRhaWxzU2VjdGlvbiA9IFJlcXVlc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudDtcclxuICByb2xlVG9BcHByb3ZhbFNlY3Rpb25NYXBwaW5nID0gc2VnbWVudER5bmFtaWNMb2FkZXJDb25maWd1cmF0aW9uLnJvbGVUb0FwcHJvdmFsU2VjdGlvbk1hcHBpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UpIHtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRDb21wb25lbnQoY29tcG9uZW50SWQ6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbXBvbmVudElkLnRvTG93ZXJDYXNlKCkgPT09IENvbnN0YW50cy5TRUNUSU9OX0lEX1JFUVVFU1RfREVUQUlMUy50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlcXVlc3REZXRhaWxzU2VjdGlvbjtcclxuICAgIH1cclxuICAgIGxldCByb2xlID0gY29tcG9uZW50SWQudG9Mb3dlckNhc2UoKS5zcGxpdChDb25zdGFudHMuU0VDVElPTl9JRF9BUFBST1ZBTF9QQVJUSUFMX05BTUUudG9Mb3dlckNhc2UoKSlbMF0udG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiB0aGlzLnJvbGVUb0FwcHJvdmFsU2VjdGlvbk1hcHBpbmdbcm9sZV07XHJcbiAgfVxyXG5cclxuICBnZXRTZWN0aW9uTmFtZShjb21wb25lbnRJZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmKGNvbXBvbmVudElkLnRvTG93ZXJDYXNlKCkgPT09IENvbnN0YW50cy5TRUNUSU9OX0lEX1JFUVVFU1RfREVUQUlMUy50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmkxOG4udHJhbnNsYXRlKCdyZXF1ZXN0RGV0YWlsc1RpdGxlJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGNvbXBvbmVudElkLnRvTG93ZXJDYXNlKCkgPT09ICdoclJlcXVlc3REZXRhaWxzJy50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmkxOG4udHJhbnNsYXRlKCdoclJlcXVlc3REZXRhaWxzVGl0bGUnKTtcclxuICAgIH1cclxuICAgIGxldCByb2xlID0gY29tcG9uZW50SWQudG9Mb3dlckNhc2UoKS5zcGxpdChDb25zdGFudHMuU0VDVElPTl9JRF9BUFBST1ZBTF9QQVJUSUFMX05BTUUudG9Mb3dlckNhc2UoKSlbMF0udG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiB0aGlzLmkxOG4udHJhbnNsYXRlKGAke3JvbGUudG9Mb3dlckNhc2UoKX1Sb2xlYCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcmludFBhcnRpYWxOYW1lIChjb21wb25lbnROYW1lOiBzdHJpbmcpIHtcclxuXHJcblxyXG5cclxuICAgIGlmIChjb21wb25lbnROYW1lID09PSBDb25zdGFudHMuU0VDVElPTl9JRF9SRVFVRVNUX0RFVEFJTFMpIHtcclxuICAgICAgcmV0dXJuICdzZWN0aW9ucmVxdWVzdERldGFpbHMnO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29tcG9uZW50TmFtZSA9PT0gJ3dwb19kQXBwcm92YWwnICkgIHsgIHJldHVybiAnc2VjdGlvbkdlbmVyYWxBcHByb3Zlcid9XHJcbiAgICAgICAgICBlbHNlIGlmIChjb21wb25lbnROYW1lID09PSAnd3BvX2dtQXBwcm92YWwnICkgIHsgIHJldHVybiAnc2VjdGlvbkdlbmVyYWxBcHByb3Zlcid9XHJcblxyXG4gICAgZWxzZSB7IHJldHVybiAnc2VjdGlvbkdlbmVyYWxBcHByb3ZhbCcgfVxyXG5cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,148 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Messages } from "../../interfaces";
3
+ import * as constants from "../../constants";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ import * as i2 from "../../services";
7
+ export class StateMachineService {
8
+ http;
9
+ coreStateMachineService;
10
+ currentSubmitter;
11
+ feedbackForm = false;
12
+ formName;
13
+ serviceName;
14
+ refreshToken;
15
+ pendingForm = false;
16
+ responderForm = false;
17
+ feedBackSent = false;
18
+ feedbackReponse = {
19
+ requestFrom: null,
20
+ requestTo: null,
21
+ requestFeedback: null,
22
+ responseFeedback: null
23
+ };
24
+ transitions;
25
+ state;
26
+ authToken;
27
+ formId;
28
+ isReadOnly;
29
+ inboxUrl;
30
+ isMobile;
31
+ requesterEmail;
32
+ authorizedEmail;
33
+ constructor(http, coreStateMachineService) {
34
+ this.http = http;
35
+ this.coreStateMachineService = coreStateMachineService;
36
+ this.isMobile = window.wmConfig.isMobile;
37
+ this.state = constants.STATE_MACHINE_STATUS_IDLE;
38
+ this.currentSubmitter = null;
39
+ this.authToken = '';
40
+ this.refreshToken = '';
41
+ this.formId = window.wmConfig.formId;
42
+ this.formName = window.wmConfig.formPrefix;
43
+ if (this.formName.includes('-new')) {
44
+ const myArray = this.formName.split("-");
45
+ this.formName = myArray['0'];
46
+ }
47
+ this.inboxUrl = window.wmConfig.inboxUri;
48
+ console.log('inboxUrl', this.inboxUrl);
49
+ console.log('inboxUrl', location.host + this.inboxUrl);
50
+ /* istanbul ignore next */
51
+ this.transitions = {
52
+ idle: {
53
+ mockApi: function (filterData, ...args) {
54
+ let body = {
55
+ method: constants.HTTP_METHOD_GET, //GET - PUT - POST
56
+ destination: constants.TARGET_SERVER_WM,
57
+ serviceName: 'serviceName', //,
58
+ formName: this.formName,
59
+ queryParameters: {}
60
+ };
61
+ let options = this.getRequestOptions();
62
+ let succ = 'serviceResponce';
63
+ return this.callPost(body, succ, options);
64
+ },
65
+ getFileTemplate: function (...args) {
66
+ let [formID] = args;
67
+ this.state = constants.STATE_MACHINE_STATUS_FETCHING;
68
+ let body = {
69
+ method: constants.HTTP_METHOD_GET,
70
+ destination: constants.TARGET_SERVER_WM,
71
+ serviceName: "getFileTemplate",
72
+ formName: "WPO",
73
+ queryParameters: {
74
+ formID: formID,
75
+ }
76
+ };
77
+ let options = this.getRequestOptions();
78
+ let succ = constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE;
79
+ return this.callPost(body, succ, options);
80
+ },
81
+ },
82
+ fetching: {
83
+ serviceResponce: function (...args) {
84
+ let [payload] = args;
85
+ let result = payload;
86
+ this.state = constants.STATE_MACHINE_STATUS_IDLE;
87
+ return result;
88
+ },
89
+ failure: function (...args) {
90
+ let [errors] = args;
91
+ this.state = constants.STATE_MACHINE_STATUS_ERROR;
92
+ return this.dispatch(constants.STATE_MACHINE_ACTION_HANDLE_ERROR, errors);
93
+ }
94
+ },
95
+ error: {
96
+ handleError: function (...args) {
97
+ let [errors] = args;
98
+ let result = new Messages({}, [], [], []);
99
+ if (errors?.meta?.messages) {
100
+ errors.meta.messages.forEach((message) => {
101
+ result[message.type].push(message.message);
102
+ if (message.payloadReference) {
103
+ let payloadReferenceTokens = message.payloadReference.split('/');
104
+ payloadReferenceTokens.slice(1, payloadReferenceTokens.length - 1);
105
+ let element = result.errorFields;
106
+ payloadReferenceTokens.forEach((token) => {
107
+ element[token] = {};
108
+ element = element[token];
109
+ });
110
+ element = true;
111
+ }
112
+ });
113
+ }
114
+ else if (errors?.errors) {
115
+ errors.errors.forEach((message) => {
116
+ result['error'].push(message.message);
117
+ });
118
+ }
119
+ this.state = constants.STATE_MACHINE_STATUS_IDLE;
120
+ return result;
121
+ }
122
+ },
123
+ sending: {
124
+ failure: function (...args) {
125
+ let [errors] = args;
126
+ this.state = constants.STATE_MACHINE_STATUS_ERROR;
127
+ return this.dispatch(constants.STATE_MACHINE_ACTION_HANDLE_ERROR, errors);
128
+ }
129
+ }
130
+ };
131
+ }
132
+ dispatch(actionName, ...args) {
133
+ const actions = this.transitions[this.state];
134
+ const action = actions[actionName];
135
+ if (action) {
136
+ return action.apply(this, args);
137
+ }
138
+ }
139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: StateMachineService, deps: [{ token: i1.HttpClient }, { token: i2.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
140
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: StateMachineService, providedIn: 'any' });
141
+ }
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: StateMachineService, decorators: [{
143
+ type: Injectable,
144
+ args: [{
145
+ providedIn: 'any',
146
+ }]
147
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.CoreService }] });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtbWFjaGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi90ZXN0Q29tcG9uZW50L3NlcnZpY2VzL3N0YXRlLW1hY2hpbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssU0FBUyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSzdDLE1BQU0sT0FBTyxtQkFBbUI7SUF3QlY7SUFBMEI7SUF2QnRDLGdCQUFnQixDQUFNO0lBQzlCLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDdEIsUUFBUSxDQUFTO0lBQ2pCLFdBQVcsQ0FBVTtJQUNyQixZQUFZLENBQVM7SUFDN0IsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixhQUFhLEdBQVksS0FBSyxDQUFDO0lBQy9CLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsZUFBZSxHQUFRO1FBQ3JCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxJQUFJO1FBQ2YsZUFBZSxFQUFFLElBQUk7UUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtLQUN2QixDQUFDO0lBQ00sV0FBVyxDQUFpRDtJQUM1RCxLQUFLLENBQVM7SUFDZCxTQUFTLENBQVM7SUFDbEIsTUFBTSxDQUFTO0lBQ2hCLFVBQVUsQ0FBUztJQUNuQixRQUFRLENBQVM7SUFDaEIsUUFBUSxDQUFVO0lBQ2xCLGNBQWMsQ0FBVTtJQUN4QixlQUFlLENBQVU7SUFDakMsWUFBb0IsSUFBZ0IsRUFBVSx1QkFBb0M7UUFBOUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBYTtRQUNoRixJQUFJLENBQUMsUUFBUSxHQUFJLE1BQWMsQ0FBQyxR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O0lBQ0gsQ0FBQzt1R0E5SVUsbUJBQW1COzJHQUFuQixtQkFBbUIsY0FGaEIsS0FBSzs7MkZBRVIsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxLQUFLO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7Q29yZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlc30gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdhbnknLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RhdGVNYWNoaW5lU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjdXJyZW50U3VibWl0dGVyOiBhbnk7XHJcbiAgZmVlZGJhY2tGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBmb3JtTmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgc2VydmljZU5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW46IHN0cmluZztcclxuICBwZW5kaW5nRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlc3BvbmRlckZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmZWVkQmFja1NlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmZWVkYmFja1JlcG9uc2U6IGFueSA9IHtcclxuICAgIHJlcXVlc3RGcm9tOiBudWxsLFxyXG4gICAgcmVxdWVzdFRvOiBudWxsLFxyXG4gICAgcmVxdWVzdEZlZWRiYWNrOiBudWxsLFxyXG4gICAgcmVzcG9uc2VGZWVkYmFjazogbnVsbFxyXG4gIH07XHJcbiAgcHJpdmF0ZSB0cmFuc2l0aW9uczogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0gfTtcclxuICBwcml2YXRlIHN0YXRlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBhdXRoVG9rZW46IHN0cmluZztcclxuICBwcml2YXRlIGZvcm1JZDogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc1JlYWRPbmx5OiBzdHJpbmc7XHJcbiAgcHVibGljIGluYm94VXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBpc01vYmlsZTogYm9vbGVhbjtcclxuICBwcml2YXRlIHJlcXVlc3RlckVtYWlsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgYXV0aG9yaXplZEVtYWlsITogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBjb3JlU3RhdGVNYWNoaW5lU2VydmljZTogQ29yZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuaXNNb2JpbGUgPSAod2luZG93IGFzIGFueSkud21Db25maWcuaXNNb2JpbGU7XHJcbiAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0lETEU7XHJcbiAgICB0aGlzLmN1cnJlbnRTdWJtaXR0ZXIgPSBudWxsO1xyXG4gICAgdGhpcy5hdXRoVG9rZW4gPSAnJztcclxuICAgIHRoaXMucmVmcmVzaFRva2VuID0gJyc7XHJcbiAgICB0aGlzLmZvcm1JZCA9ICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5mb3JtSWQ7XHJcbiAgICB0aGlzLmZvcm1OYW1lID0od2luZG93IGFzIGFueSkud21Db25maWcuZm9ybVByZWZpeDtcclxuICAgIGlmKHRoaXMuZm9ybU5hbWUuaW5jbHVkZXMoJy1uZXcnKSl7XHJcbiAgICAgIGNvbnN0IG15QXJyYXkgPSB0aGlzLmZvcm1OYW1lLnNwbGl0KFwiLVwiKTtcclxuICAgICAgdGhpcy5mb3JtTmFtZSA9IG15QXJyYXlbJzAnXVxyXG4gICAgfVxyXG4gICAgdGhpcy5pbmJveFVybCA9ICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5pbmJveFVyaTtcclxuICAgIGNvbnNvbGUubG9nKCdpbmJveFVybCcsIHRoaXMuaW5ib3hVcmwpO1xyXG4gICAgY29uc29sZS5sb2coJ2luYm94VXJsJywgbG9jYXRpb24uaG9zdCArIHRoaXMuaW5ib3hVcmwpO1xyXG5cclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xyXG4gICAgdGhpcy50cmFuc2l0aW9ucyA9IHtcclxuICAgICAgaWRsZToge1xyXG4gICAgICAgIG1vY2tBcGk6IGZ1bmN0aW9uIChmaWx0ZXJEYXRhLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgICBsZXQgYm9keSA9IHtcclxuICAgICAgICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfR0VULCAvL0dFVCAtIFBVVCAtIFBPU1RcclxuICAgICAgICAgICAgZGVzdGluYXRpb246IGNvbnN0YW50cy5UQVJHRVRfU0VSVkVSX1dNLFxyXG4gICAgICAgICAgICBzZXJ2aWNlTmFtZTogJ3NlcnZpY2VOYW1lJywgLy8sXHJcbiAgICAgICAgICAgIGZvcm1OYW1lOiB0aGlzLmZvcm1OYW1lLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnM6IHtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgICAgICAgbGV0IHN1Y2MgPSAnc2VydmljZVJlc3BvbmNlJztcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNhbGxQb3N0KGJvZHksIHN1Y2MsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGdldEZpbGVUZW1wbGF0ZTogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgICAgbGV0IFtmb3JtSURdID0gYXJncztcclxuICAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfRkVUQ0hJTkc7XHJcbiAgICAgICAgICBsZXQgYm9keSA9IHtcclxuICAgICAgICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfR0VULFxyXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lOiBcImdldEZpbGVUZW1wbGF0ZVwiLFxyXG4gICAgICAgICAgICBmb3JtTmFtZTogXCJXUE9cIixcclxuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgICAgICAgZm9ybUlEOiBmb3JtSUQsXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLmdldFJlcXVlc3RPcHRpb25zKCk7XHJcbiAgICAgICAgICBsZXQgc3VjYyA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TVUNDRVNTX1JFU1BPTlNFO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFBvc3QoYm9keSwgc3VjYywgb3B0aW9ucyk7XHJcbiAgICAgICAgfSxcclxuXHJcblxyXG5cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGZldGNoaW5nOiB7XHJcbiAgICAgICAgc2VydmljZVJlc3BvbmNlOiBmdW5jdGlvbiAoLi4uYXJnczogYW55KSB7XHJcbiAgICAgICAgICBsZXQgW3BheWxvYWRdID0gYXJncztcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBwYXlsb2FkO1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX1NUQVRVU19JRExFO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWx1cmU6IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgICBsZXQgW2Vycm9yc10gPSBhcmdzO1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX1NUQVRVU19FUlJPUjtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9IQU5ETEVfRVJST1IsIGVycm9ycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjoge1xyXG4gICAgICAgIGhhbmRsZUVycm9yOiBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICAgICAgbGV0IFtlcnJvcnNdID0gYXJncztcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgTWVzc2FnZXMoXHJcbiAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICBbXSxcclxuICAgICAgICAgICAgW10sXHJcbiAgICAgICAgICAgIFtdXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGVycm9ycz8ubWV0YT8ubWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgZXJyb3JzLm1ldGEubWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJlc3VsdFttZXNzYWdlLnR5cGVdLnB1c2gobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICBpZiAobWVzc2FnZS5wYXlsb2FkUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGF5bG9hZFJlZmVyZW5jZVRva2VucyA9IG1lc3NhZ2UucGF5bG9hZFJlZmVyZW5jZS5zcGxpdCgnLycpO1xyXG4gICAgICAgICAgICAgICAgcGF5bG9hZFJlZmVyZW5jZVRva2Vucy5zbGljZSgxLCBwYXlsb2FkUmVmZXJlbmNlVG9rZW5zLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSByZXN1bHQuZXJyb3JGaWVsZHM7XHJcbiAgICAgICAgICAgICAgICBwYXlsb2FkUmVmZXJlbmNlVG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnRbdG9rZW5dID0ge307XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50W3Rva2VuXTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlcnJvcnM/LmVycm9ycykge1xyXG4gICAgICAgICAgICBlcnJvcnMuZXJyb3JzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgICByZXN1bHRbJ2Vycm9yJ10ucHVzaChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfSURMRTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBzZW5kaW5nOiB7XHJcbiAgICAgICAgZmFpbHVyZTogZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgICAgIGxldCBbZXJyb3JzXSA9IGFyZ3M7XHJcbiAgICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0VSUk9SO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0hBTkRMRV9FUlJPUiwgZXJyb3JzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNwYXRjaChhY3Rpb25OYW1lLCAuLi5hcmdzKSB7XHJcbiAgICBjb25zdCBhY3Rpb25zID0gdGhpcy50cmFuc2l0aW9uc1t0aGlzLnN0YXRlXTtcclxuICAgIGNvbnN0IGFjdGlvbiA9IGFjdGlvbnNbYWN0aW9uTmFtZV07XHJcblxyXG4gICAgaWYgKGFjdGlvbikge1xyXG4gICAgICByZXR1cm4gYWN0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8qICBwcml2YXRlIGdldFJlcXVlc3RPcHRpb25zKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICBhdXRoVG9rZW46IHRoaXMuY29yZVN0YXRlTWFjaGluZVNlcnZpY2UuZ2V0U2Vzc2lvblRva2VuKCksXHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9UWVBFX0ZPUk1cclxuICAgICAgfSksXHJcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSdcclxuICAgIH1cclxuICB9Ki9cclxuXHJcbiAgLypwdWJsaWMgY2FsbFBvc3QoYm9keSwgc3VjYywgb3B0aW9ucykge1xyXG4gICAgbGV0IGFwaVVybCA9IGVudmlyb25tZW50LnByb3h5U2VydmljZUJhc2VVcmwgKyAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2UgKyBlbnZpcm9ubWVudC5wcm94eUZ1bGxBZGRyZXNzICsgZW52aXJvbm1lbnQucHJveHlTZXJ2aWNlRXhlY3V0ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlVcmwsIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShib2R5KSksIG9wdGlvbnMpLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKFxyXG4gICAgICAgIChyZXNwb25zZU9iamVjdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgcGF5bG9hZCA9IHJlc3BvbnNlT2JqZWN0LmJvZHk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0ZFVENISU5HO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goc3VjYywgcGF5bG9hZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgKS5jYXRjaChcclxuICAgICAgICAoaHR0cEVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCByZXNwb25zZUVycm9yID0gaHR0cEVycm9yLmVycm9yO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlRXJyb3IpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX1NUQVRVU19GRVRDSElORztcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0ZBSUxVUkUsIHJlc3BvbnNlRXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfSURMRTtcclxuICAgICAgICAgICAgdGhyb3cgaHR0cEVycm9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9Ki9cclxufVxyXG4iXX0=