@techextensor/tab-sdk 0.0.41 → 0.0.43

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 (35) hide show
  1. package/README.md +24 -24
  2. package/fesm2022/techextensor-tab-sdk.mjs +770 -48
  3. package/fesm2022/techextensor-tab-sdk.mjs.map +1 -1
  4. package/lib/interface/state.interface.d.ts +151 -0
  5. package/lib/model/component-state.model.d.ts +63 -0
  6. package/lib/model/query-state.model.d.ts +37 -0
  7. package/lib/model/screen-state.model.d.ts +56 -0
  8. package/lib/model/script-state.model.d.ts +21 -0
  9. package/lib/state/state.service.d.ts +101 -0
  10. package/lib/tab-sdk.service.d.ts +4 -0
  11. package/lib/ui/ui.service.d.ts +5 -5
  12. package/lib/workflow/workflow.service.d.ts +8 -0
  13. package/package.json +2 -4
  14. package/public-api.d.ts +1 -0
  15. package/esm2022/lib/app/analytics.service.mjs +0 -51
  16. package/esm2022/lib/app/app.service.mjs +0 -175
  17. package/esm2022/lib/app/file.service.mjs +0 -84
  18. package/esm2022/lib/app/release.service.mjs +0 -38
  19. package/esm2022/lib/app/report.service.mjs +0 -48
  20. package/esm2022/lib/app/translator.service.mjs +0 -77
  21. package/esm2022/lib/auth/auth.service.mjs +0 -95
  22. package/esm2022/lib/crud/crud.service.mjs +0 -191
  23. package/esm2022/lib/enum/store.enum.mjs +0 -6
  24. package/esm2022/lib/enum/ui.enum.mjs +0 -13
  25. package/esm2022/lib/http/http.service.mjs +0 -58
  26. package/esm2022/lib/interface/http.interface.mjs +0 -2
  27. package/esm2022/lib/interface/ui.interface.mjs +0 -2
  28. package/esm2022/lib/store/store.service.mjs +0 -829
  29. package/esm2022/lib/tab-sdk.service.mjs +0 -84
  30. package/esm2022/lib/ui/form.service.mjs +0 -79
  31. package/esm2022/lib/ui/ui.service.mjs +0 -344
  32. package/esm2022/lib/util/util.service.mjs +0 -54
  33. package/esm2022/lib/workflow/transition.service.mjs +0 -40
  34. package/esm2022/public-api.mjs +0 -9
  35. package/esm2022/techextensor-tab-sdk.mjs +0 -5
@@ -1,84 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { MetadataHelper } from '@techextensor/tab-core-utility';
3
- import { UiService } from './ui/ui.service';
4
- import { AuthUtilService } from './auth/auth.service';
5
- import { FormService } from './ui/form.service';
6
- import { TransitionService } from './workflow/transition.service';
7
- import { AppService } from './app/app.service';
8
- import { FileService } from './app/file.service';
9
- import { ReportService } from './app/report.service';
10
- import { ReleaseService } from './app/release.service';
11
- import { AnalyticsService } from './app/analytics.service';
12
- import { TranslatorService } from './app/translator.service';
13
- import { CrudService } from './crud/crud.service';
14
- import { HttpService } from './http/http.service';
15
- import { StoreService } from './store/store.service';
16
- import { UtilService } from './util/util.service';
17
- import * as i0 from "@angular/core";
18
- export class TabSdk {
19
- static app;
20
- static auth;
21
- static ui;
22
- static form;
23
- static transition;
24
- static metadataUtils;
25
- static file;
26
- static report;
27
- static release;
28
- static analytics;
29
- static translator;
30
- static crud;
31
- static http;
32
- static store;
33
- static util;
34
- /**
35
- * Initialize the SDK with necessary services
36
- */
37
- static init(injector, context) {
38
- // Expose to window for global access if needed
39
- window.TabSdk = TabSdk;
40
- // Initialize services
41
- this.app = injector.get(AppService);
42
- this.auth = injector.get(AuthUtilService);
43
- this.ui = injector.get(UiService);
44
- this.form = injector.get(FormService);
45
- this.transition = injector.get(TransitionService);
46
- this.metadataUtils = injector.get(MetadataHelper);
47
- this.file = injector.get(FileService);
48
- this.report = injector.get(ReportService);
49
- this.release = injector.get(ReleaseService);
50
- this.analytics = injector.get(AnalyticsService);
51
- this.translator = injector.get(TranslatorService);
52
- this.crud = injector.get(CrudService);
53
- this.http = injector.get(HttpService);
54
- this.store = injector.get(StoreService);
55
- // Initialize util service with context
56
- const utilService = injector.get(UtilService);
57
- this.util = utilService.init(context);
58
- // Freeze the global object to prevent modifications
59
- Object.freeze(this);
60
- Object.freeze(this.app);
61
- Object.freeze(this.auth);
62
- Object.freeze(this.ui);
63
- Object.freeze(this.form);
64
- Object.freeze(this.transition);
65
- Object.freeze(this.file);
66
- Object.freeze(this.report);
67
- Object.freeze(this.release);
68
- Object.freeze(this.analytics);
69
- Object.freeze(this.translator);
70
- Object.freeze(this.crud);
71
- Object.freeze(this.http);
72
- Object.freeze(this.store);
73
- Object.freeze(this.util);
74
- }
75
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabSdk, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
76
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabSdk, providedIn: 'root' });
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabSdk, decorators: [{
79
- type: Injectable,
80
- args: [{
81
- providedIn: 'root'
82
- }]
83
- }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXNkay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL3RhYi1zZGsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUtsRCxNQUFNLE9BQU8sTUFBTTtJQUNWLE1BQU0sQ0FBQyxHQUFHLENBQWE7SUFDdkIsTUFBTSxD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QUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzt3R0E5RFUsTUFBTTs0R0FBTixNQUFNLGNBRkwsTUFBTTs7NEZBRVAsTUFBTTtrQkFIbEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICdAdGVjaGV4dGVuc29yL3RhYi1jb3JlLXV0aWxpdHknO1xuaW1wb3J0IHsgVWlTZXJ2aWNlIH0gZnJvbSAnLi91aS91aS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhVdGlsU2VydmljZSB9IGZyb20gJy4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL3VpL2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uU2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3cvdHJhbnNpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICcuL2FwcC9hcHAuc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlU2VydmljZSB9IGZyb20gJy4vYXBwL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi9hcHAvcmVwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVsZWFzZVNlcnZpY2UgfSBmcm9tICcuL2FwcC9yZWxlYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYXBwL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9hcHAvdHJhbnNsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi9jcnVkL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS9zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi91dGlsL3V0aWwuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYlNkayB7XG4gIHB1YmxpYyBzdGF0aWMgYXBwOiBBcHBTZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIGF1dGg6IEF1dGhVdGlsU2VydmljZTtcbiAgcHVibGljIHN0YXRpYyB1aTogVWlTZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIGZvcm06IEZvcm1TZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIHRyYW5zaXRpb246IFRyYW5zaXRpb25TZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIG1ldGFkYXRhVXRpbHM6IE1ldGFkYXRhSGVscGVyO1xuICBwdWJsaWMgc3RhdGljIGZpbGU6IEZpbGVTZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIHJlcG9ydDogUmVwb3J0U2VydmljZTtcbiAgcHVibGljIHN0YXRpYyByZWxlYXNlOiBSZWxlYXNlU2VydmljZTtcbiAgcHVibGljIHN0YXRpYyBhbmFseXRpY3M6IEFuYWx5dGljc1NlcnZpY2U7XG4gIHB1YmxpYyBzdGF0aWMgdHJhbnNsYXRvcjogVHJhbnNsYXRvclNlcnZpY2U7XG4gIHB1YmxpYyBzdGF0aWMgY3J1ZDogQ3J1ZFNlcnZpY2U7XG4gIHB1YmxpYyBzdGF0aWMgaHR0cDogSHR0cFNlcnZpY2U7XG4gIHB1YmxpYyBzdGF0aWMgc3RvcmU6IFN0b3JlU2VydmljZTtcbiAgcHVibGljIHN0YXRpYyB1dGlsOiBhbnk7XG5cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgU0RLIHdpdGggbmVjZXNzYXJ5IHNlcnZpY2VzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGluaXQoaW5qZWN0b3I6IEluamVjdG9yLCBjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBFeHBvc2UgdG8gd2luZG93IGZvciBnbG9iYWwgYWNjZXNzIGlmIG5lZWRlZFxuICAgICh3aW5kb3cgYXMgYW55KS5UYWJTZGsgPSBUYWJTZGs7XG5cbiAgICAvLyBJbml0aWFsaXplIHNlcnZpY2VzXG4gICAgdGhpcy5hcHAgPSBpbmplY3Rvci5nZXQoQXBwU2VydmljZSk7XG4gICAgdGhpcy5hdXRoID0gaW5qZWN0b3IuZ2V0KEF1dGhVdGlsU2VydmljZSk7XG4gICAgdGhpcy51aSA9IGluamVjdG9yLmdldChVaVNlcnZpY2UpO1xuICAgIHRoaXMuZm9ybSA9IGluamVjdG9yLmdldChGb3JtU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2l0aW9uID0gaW5qZWN0b3IuZ2V0KFRyYW5zaXRpb25TZXJ2aWNlKTtcbiAgICB0aGlzLm1ldGFkYXRhVXRpbHMgPSBpbmplY3Rvci5nZXQoTWV0YWRhdGFIZWxwZXIpO1xuICAgIHRoaXMuZmlsZSA9IGluamVjdG9yLmdldChGaWxlU2VydmljZSk7XG4gICAgdGhpcy5yZXBvcnQgPSBpbmplY3Rvci5nZXQoUmVwb3J0U2VydmljZSk7XG4gICAgdGhpcy5yZWxlYXNlID0gaW5qZWN0b3IuZ2V0KFJlbGVhc2VTZXJ2aWNlKTtcbiAgICB0aGlzLmFuYWx5dGljcyA9IGluamVjdG9yLmdldChBbmFseXRpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLnRyYW5zbGF0b3IgPSBpbmplY3Rvci5nZXQoVHJhbnNsYXRvclNlcnZpY2UpO1xuICAgIHRoaXMuY3J1ZCA9IGluamVjdG9yLmdldChDcnVkU2VydmljZSk7XG4gICAgdGhpcy5odHRwID0gaW5qZWN0b3IuZ2V0KEh0dHBTZXJ2aWNlKTtcbiAgICB0aGlzLnN0b3JlID0gaW5qZWN0b3IuZ2V0KFN0b3JlU2VydmljZSk7XG5cbiAgICAvLyBJbml0aWFsaXplIHV0aWwgc2VydmljZSB3aXRoIGNvbnRleHRcbiAgICBjb25zdCB1dGlsU2VydmljZSA9IGluamVjdG9yLmdldChVdGlsU2VydmljZSk7XG4gICAgdGhpcy51dGlsID0gdXRpbFNlcnZpY2UuaW5pdChjb250ZXh0KTtcblxuICAgIC8vIEZyZWV6ZSB0aGUgZ2xvYmFsIG9iamVjdCB0byBwcmV2ZW50IG1vZGlmaWNhdGlvbnNcbiAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xuICAgIFxuICAgIE9iamVjdC5mcmVlemUodGhpcy5hcHApO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy5hdXRoKTtcbiAgICBPYmplY3QuZnJlZXplKHRoaXMudWkpO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy5mb3JtKTtcbiAgICBPYmplY3QuZnJlZXplKHRoaXMudHJhbnNpdGlvbik7XG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzLmZpbGUpO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy5yZXBvcnQpO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy5yZWxlYXNlKTtcbiAgICBPYmplY3QuZnJlZXplKHRoaXMuYW5hbHl0aWNzKTtcbiAgICBPYmplY3QuZnJlZXplKHRoaXMudHJhbnNsYXRvcik7XG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzLmNydWQpO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy5odHRwKTtcbiAgICBPYmplY3QuZnJlZXplKHRoaXMuc3RvcmUpO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy51dGlsKTtcbiAgfVxufSJdfQ==
@@ -1,79 +0,0 @@
1
- import { inject, Injectable } from '@angular/core';
2
- import { TabFormioService, TemplateHelper } from '@techextensor/tab-core-utility';
3
- import { firstValueFrom } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- export class FormService {
6
- _tabFormioService = inject(TabFormioService);
7
- _templateHelper = inject(TemplateHelper);
8
- /**
9
- * Retrieves a screen by its ID.
10
- *
11
- * @param screenId The ID of the screen to retrieve.
12
- * @param config Optional configuration object for the request.
13
- * @returns A promise of the response from the server.
14
- */
15
- async getScreen(screenId, config) {
16
- const response = await firstValueFrom(this._tabFormioService.getScreen(screenId, config));
17
- return response;
18
- }
19
- /**
20
- * Retrieves the data for a screen by its ID.
21
- *
22
- * @param screenId The ID of the screen to retrieve the data for.
23
- * @param requestPayload The request payload to send to the server.
24
- * @returns A promise of the response from the server.
25
- */
26
- async getScreenData(screenId, requestPayload) {
27
- // Send the request to the server and get the response.
28
- const response = await firstValueFrom(this._tabFormioService.getScreenData(screenId, requestPayload));
29
- // Return the response from the server.
30
- return response;
31
- }
32
- /**
33
- * Processes a request using the provided request payload.
34
- *
35
- * @param requestPayload The payload to be processed.
36
- * @returns A promise of the response from the server.
37
- */
38
- async processRequest(requestPayload) {
39
- // Send the request payload to the server and await the response.
40
- const response = await firstValueFrom(this._tabFormioService.processRequest(requestPayload));
41
- // Return the server's response.
42
- return response;
43
- }
44
- /**
45
- * Builds Form.io components for the specified app object ID and type.
46
- *
47
- * @param appObjectId The ID of the app object to build the components for.
48
- * @param type The type of components to build.
49
- * @returns A promise of the response from the server.
50
- */
51
- async buildFormIOComponents(appObjectId, type) {
52
- // Send the request to the server to build the components.
53
- const response = await firstValueFrom(this._tabFormioService.buildFormIOComponents(appObjectId, type));
54
- // Return the response from the server.
55
- return response;
56
- }
57
- /**
58
- * Parses a template using the provided request payload.
59
- *
60
- * @param requestPayload The payload containing the template to be parsed.
61
- * @param onFailedParseOnServer If the parsing should be done on the server.
62
- * @returns A promise of the response from the server.
63
- */
64
- async parseTemplate(requestPayload, onFailedParseOnServer = false) {
65
- // Send the request to the server to parse the template.
66
- const response = await firstValueFrom(this._templateHelper.templateParseUniversal(requestPayload, onFailedParseOnServer));
67
- // Return the response from the server.
68
- return response;
69
- }
70
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
71
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormService, providedIn: 'root' });
72
- }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormService, decorators: [{
74
- type: Injectable,
75
- args: [{
76
- providedIn: 'root'
77
- }]
78
- }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL3VpL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQXFGLGdCQUFnQixFQUFFLGNBQWMsRUFBd0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzTCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt0QyxNQUFNLE9BQU8sV0FBVztJQUNILGlCQUFpQixHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRCxlQUFlLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUUxRTs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQWdCLEVBQUUsTUFBd0I7UUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUNyRCxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBZ0IsRUFBRSxjQUFtQjtRQUNyRCx1REFBdUQ7UUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUNqRSxDQUFDO1FBRUYsdUNBQXVDO1FBQ3ZDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBcUM7UUFDdEQsaUVBQWlFO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUN4RCxDQUFDO1FBRUYsZ0NBQWdDO1FBQ2hDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMscUJBQXFCLENBQUMsV0FBbUIsRUFBRSxJQUE0QjtRQUN6RSwwREFBMEQ7UUFDMUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQ2xFLENBQUM7UUFFRix1Q0FBdUM7UUFDdkMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBb0MsRUFBRSxxQkFBcUIsR0FBRyxLQUFLO1FBQ25GLHdEQUF3RDtRQUN4RCxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUMsQ0FDckYsQ0FBQztRQUVGLHVDQUF1QztRQUN2QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO3dHQW5GUSxXQUFXOzRHQUFYLFdBQVcsY0FGUixNQUFNOzs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnVpbGRGb3JtQ29tcG9uZW50VHlwZSwgQ29tbW9uQXBpUmVzcG9uc2UsIEdldFNjcmVlbkNvbmZpZywgUHJvY2Vzc1JlcXVlc3RQYXlsb2FkLCBUYWJGb3JtaW9TZXJ2aWNlLCBUZW1wbGF0ZUhlbHBlciwgVGVtcGxhdGVQYXJzZVBheWxvYWQgfSBmcm9tICdAdGVjaGV4dGVuc29yL3RhYi1jb3JlLXV0aWxpdHknO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiRm9ybWlvU2VydmljZTogVGFiRm9ybWlvU2VydmljZSA9IGluamVjdChUYWJGb3JtaW9TZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZW1wbGF0ZUhlbHBlcjogVGVtcGxhdGVIZWxwZXIgPSBpbmplY3QoVGVtcGxhdGVIZWxwZXIpO1xuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGEgc2NyZWVuIGJ5IGl0cyBJRC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY3JlZW5JZCBUaGUgSUQgb2YgdGhlIHNjcmVlbiB0byByZXRyaWV2ZS5cbiAgICAgKiBAcGFyYW0gY29uZmlnIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgcmVxdWVzdC5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2Ugb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRTY3JlZW4oc2NyZWVuSWQ6IHN0cmluZywgY29uZmlnPzogR2V0U2NyZWVuQ29uZmlnKTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fdGFiRm9ybWlvU2VydmljZS5nZXRTY3JlZW4oc2NyZWVuSWQsIGNvbmZpZylcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgZGF0YSBmb3IgYSBzY3JlZW4gYnkgaXRzIElELlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjcmVlbklkIFRoZSBJRCBvZiB0aGUgc2NyZWVuIHRvIHJldHJpZXZlIHRoZSBkYXRhIGZvci5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdFBheWxvYWQgVGhlIHJlcXVlc3QgcGF5bG9hZCB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0U2NyZWVuRGF0YShzY3JlZW5JZDogc3RyaW5nLCByZXF1ZXN0UGF5bG9hZDogYW55KTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBTZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgYW5kIGdldCB0aGUgcmVzcG9uc2UuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLl90YWJGb3JtaW9TZXJ2aWNlLmdldFNjcmVlbkRhdGEoc2NyZWVuSWQsIHJlcXVlc3RQYXlsb2FkKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLlxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGEgcmVxdWVzdCB1c2luZyB0aGUgcHJvdmlkZWQgcmVxdWVzdCBwYXlsb2FkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXlsb2FkIFRoZSBwYXlsb2FkIHRvIGJlIHByb2Nlc3NlZC5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2Ugb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBhc3luYyBwcm9jZXNzUmVxdWVzdChyZXF1ZXN0UGF5bG9hZDogUHJvY2Vzc1JlcXVlc3RQYXlsb2FkKTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBTZW5kIHRoZSByZXF1ZXN0IHBheWxvYWQgdG8gdGhlIHNlcnZlciBhbmQgYXdhaXQgdGhlIHJlc3BvbnNlLlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fdGFiRm9ybWlvU2VydmljZS5wcm9jZXNzUmVxdWVzdChyZXF1ZXN0UGF5bG9hZClcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIHNlcnZlcidzIHJlc3BvbnNlLlxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIEZvcm0uaW8gY29tcG9uZW50cyBmb3IgdGhlIHNwZWNpZmllZCBhcHAgb2JqZWN0IElEIGFuZCB0eXBlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE9iamVjdElkIFRoZSBJRCBvZiB0aGUgYXBwIG9iamVjdCB0byBidWlsZCB0aGUgY29tcG9uZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgY29tcG9uZW50cyB0byBidWlsZC5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2Ugb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBhc3luYyBidWlsZEZvcm1JT0NvbXBvbmVudHMoYXBwT2JqZWN0SWQ6IHN0cmluZywgdHlwZTogQnVpbGRGb3JtQ29tcG9uZW50VHlwZSk6IFByb21pc2U8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgLy8gU2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyIHRvIGJ1aWxkIHRoZSBjb21wb25lbnRzLlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fdGFiRm9ybWlvU2VydmljZS5idWlsZEZvcm1JT0NvbXBvbmVudHMoYXBwT2JqZWN0SWQsIHR5cGUpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgYSB0ZW1wbGF0ZSB1c2luZyB0aGUgcHJvdmlkZWQgcmVxdWVzdCBwYXlsb2FkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXlsb2FkIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHRlbXBsYXRlIHRvIGJlIHBhcnNlZC5cbiAgICAgKiBAcGFyYW0gb25GYWlsZWRQYXJzZU9uU2VydmVyIElmIHRoZSBwYXJzaW5nIHNob3VsZCBiZSBkb25lIG9uIHRoZSBzZXJ2ZXIuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICovXG4gICAgYXN5bmMgcGFyc2VUZW1wbGF0ZShyZXF1ZXN0UGF5bG9hZDogVGVtcGxhdGVQYXJzZVBheWxvYWQsIG9uRmFpbGVkUGFyc2VPblNlcnZlciA9IGZhbHNlKTogUHJvbWlzZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBTZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdG8gcGFyc2UgdGhlIHRlbXBsYXRlLlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVIZWxwZXIudGVtcGxhdGVQYXJzZVVuaXZlcnNhbChyZXF1ZXN0UGF5bG9hZCwgb25GYWlsZWRQYXJzZU9uU2VydmVyKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLlxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxufSJdfQ==
@@ -1,344 +0,0 @@
1
- import { inject, Injectable } from '@angular/core';
2
- import { NavigationType, ScreenDisplayMode } from '../enum/ui.enum';
3
- import { TabSdk } from '../tab-sdk.service';
4
- import { ConfirmationService, NotificationService, NotificationType } from '@techextensor/tab-core-utility';
5
- import * as i0 from "@angular/core";
6
- export class UiService {
7
- _notificationService = inject(NotificationService);
8
- _confirmationService = inject(ConfirmationService);
9
- /**
10
- * Open a screen with the given options. The mode determines how the screen is
11
- * displayed.
12
- *
13
- * @param options The options for opening the screen.
14
- */
15
- openScreen(options) {
16
- const { mode, ...otherOptions } = options;
17
- switch (mode) {
18
- case ScreenDisplayMode.Sidebar:
19
- this.showSidebar(otherOptions);
20
- break;
21
- case ScreenDisplayMode.Popup:
22
- this.showDialog(otherOptions);
23
- break;
24
- case ScreenDisplayMode.SameTab:
25
- this.navigateTo(otherOptions);
26
- break;
27
- case ScreenDisplayMode.NewTab:
28
- this.openInNewTab(otherOptions);
29
- break;
30
- }
31
- }
32
- /**
33
- * Opens a screen in a sidebar.
34
- *
35
- * @param options The options for opening the sidebar.
36
- */
37
- showSidebar(options) {
38
- const otherConfiguration = {
39
- ...(options.title && { title: options.title }),
40
- ...(options.width && { width: options.width }),
41
- ...(options.height && { height: options.height }),
42
- ...(options.customClass && { customClass: options.customClass }),
43
- ...(options.refresher && { refresher: options.refresher }),
44
- ...(options.closer && { closer: options.closer })
45
- };
46
- TabSdk.util?.openScreen(ScreenDisplayMode.Sidebar, options.screenId, options.reqtokens || undefined, options.submission || undefined, Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined);
47
- }
48
- /**
49
- * Opens a screen in a popup dialog.
50
- *
51
- * @param options The options for opening the dialog.
52
- */
53
- showDialog(options) {
54
- const otherConfiguration = {
55
- ...(options.title && { title: options.title }),
56
- ...(options.width && { width: options.width }),
57
- ...(options.height && { height: options.height }),
58
- ...(options.customClass && { customClass: options.customClass }),
59
- ...(options.refresher && { refresher: options.refresher }),
60
- ...(options.closer && { closer: options.closer })
61
- };
62
- TabSdk.util?.openScreen(ScreenDisplayMode.Popup, options.screenId, options.reqtokens || undefined, options.submission || undefined, Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined);
63
- }
64
- /**
65
- * Navigates to a screen within the same tab.
66
- *
67
- * @param options - The options for navigation, including screenId and optional reqtokens.
68
- */
69
- navigateTo(options) {
70
- TabSdk.util?.openScreen(ScreenDisplayMode.SameTab, options.screenId, options.reqtokens || undefined);
71
- }
72
- /**
73
- * Navigates to a screen in a new tab.
74
- *
75
- * @param options The options for navigation, including screenId and optional reqtokens.
76
- */
77
- openInNewTab(options) {
78
- TabSdk.util?.openScreen(ScreenDisplayMode.NewTab, options.screenId, options.reqtokens || undefined);
79
- }
80
- /**
81
- * Navigates to the specified URL.
82
- *
83
- * @param url - The URL to navigate to.
84
- */
85
- navigateToUrl(params) {
86
- TabSdk.util?.navigateTo({
87
- ...params,
88
- type: NavigationType.NavigateToUrl
89
- });
90
- }
91
- /**
92
- * Navigates to a specified subdomain using the provided options.
93
- *
94
- * @param options - The options for navigation, including subDomain, appCode, and url.
95
- */
96
- navigateToSubdomain(options) {
97
- TabSdk.util?.navigateTo({
98
- ...options,
99
- type: NavigationType.NavigateToSubdomain
100
- });
101
- }
102
- /**
103
- * Retrieves the active screen ID from the current URL.
104
- *
105
- * @returns The screen ID if present in the URL, otherwise undefined.
106
- */
107
- getActiveUrlScreenId() {
108
- // Split the URL pathname into parts using the '/' character as a delimiter
109
- const urlParts = window?.location?.pathname?.split('/');
110
- // Extract the screen ID part and remove any query parameters
111
- const screenId = urlParts?.length > 1 ? urlParts?.[urlParts?.length - 1]?.split('?')[0] : undefined;
112
- // Return the screen ID or undefined if not found
113
- return screenId;
114
- }
115
- /**
116
- * Retrieves the active redirect URL by combining the active screen ID and any query parameters.
117
- *
118
- * @returns The constructed redirect URL or undefined if no screen ID is present.
119
- */
120
- getActiveRedirectUrl() {
121
- // Get the active screen ID from the current URL
122
- const screenId = this.getActiveUrlScreenId();
123
- let redirectURL;
124
- // Check if the current URL contains a screen ID
125
- if (screenId) {
126
- // Initialize the redirect URL with the screen ID
127
- redirectURL = screenId;
128
- // Parse the current URL's query parameters
129
- const queryParams = new URLSearchParams(window.location.search);
130
- // If there are query parameters, append them to the redirect URL
131
- if (queryParams.toString()) {
132
- redirectURL += `&${queryParams.toString()}`;
133
- }
134
- }
135
- // Return the constructed redirect URL or undefined
136
- return redirectURL;
137
- }
138
- /**
139
- * Show a notification to the user.
140
- *
141
- * @param options The options for the notification.
142
- */
143
- notify(options) {
144
- return this._notificationService.notify({
145
- type: options.type,
146
- message: TabSdk.translator.translate(options.message),
147
- ...(options?.title ? { title: TabSdk.translator.translate(options.title) } : {}),
148
- ...(options?.configuration ? { configuration: options.configuration } : {}),
149
- });
150
- }
151
- /**
152
- * Displays a success notification to the user.
153
- *
154
- * @param options - The options for the notification, including message, title, and configuration.
155
- */
156
- showSuccess(options) {
157
- return this.notify({
158
- ...options,
159
- type: NotificationType.Success,
160
- title: options?.title ?? 'Success'
161
- });
162
- }
163
- /**
164
- * Displays a warning notification to the user.
165
- *
166
- * @param options - The options for the notification, including message, title, and configuration.
167
- */
168
- showWarning(options) {
169
- return this.notify({
170
- ...options,
171
- type: NotificationType.Warning,
172
- title: options?.title ?? 'Warning'
173
- });
174
- }
175
- /**
176
- * Displays an info notification to the user.
177
- *
178
- * @param options - The options for the notification, including message, title, and configuration.
179
- */
180
- showInfo(options) {
181
- return this.notify({
182
- ...options,
183
- type: NotificationType.Info,
184
- title: options?.title ?? 'Info'
185
- });
186
- }
187
- /**
188
- * Displays an error notification to the user.
189
- *
190
- * @param options - The options for the notification, including message, title, and configuration.
191
- */
192
- showError(options) {
193
- return this.notify({
194
- ...options,
195
- type: NotificationType.Error,
196
- title: options?.title ?? 'Error'
197
- });
198
- }
199
- /**
200
- * Clears a notification by ID.
201
- *
202
- * @param notificationId - The ID of the notification to clear.
203
- * @returns The cleared notification, or null if the notification doesn't exist.
204
- */
205
- clearNotification(notificationId) {
206
- return this._notificationService.clearNotification(notificationId);
207
- }
208
- /**
209
- * Displays a confirmation dialog to the user and returns a promise that resolves
210
- * to a boolean indicating whether the user confirmed the action.
211
- *
212
- * @param options - The options for the confirmation dialog, including title, message,
213
- * confirmText, cancelText, and visibility of buttons.
214
- * @returns A promise that resolves to true if the user confirms, false otherwise.
215
- */
216
- confirm(options) {
217
- return new Promise((resolve) => {
218
- this._confirmationService.confirm(options)
219
- ?.subscribe((isConfirmed) => {
220
- resolve(isConfirmed);
221
- });
222
- });
223
- }
224
- /**
225
- * Displays a confirmation dialog to the user with a title and message that indicates
226
- * the user is about to delete an item. The confirmation dialog has a "Delete" and "Cancel"
227
- * button.
228
- *
229
- * @param options - The options for the confirmation dialog, including the item name and
230
- * optional message.
231
- * @returns A promise that resolves to true if the user confirms, false otherwise.
232
- */
233
- confirmDelete(options) {
234
- return this.confirm({
235
- title: options?.title ?? `Are you sure you want to delete this record`,
236
- message: options?.message ?? `You are about to delete the selected record. Are you sure you want to proceed?`,
237
- primaryOption: 'Delete',
238
- });
239
- }
240
- /**
241
- * Displays a confirmation dialog to the user with a title and message that indicates
242
- * the user is about to discard changes to an item. The confirmation dialog has a "Discard"
243
- * and "Cancel" button.
244
- *
245
- * @param options - The options for the confirmation dialog, including the item name and
246
- * optional message.
247
- * @returns A promise that resolves to true if the user confirms, false otherwise.
248
- */
249
- confirmDiscard(options) {
250
- return this.confirm({
251
- title: `Are you sure you want to discard your changes`,
252
- message: options?.message ?? `You are about to discard your changes. Are you sure you want to proceed?`,
253
- primaryOption: 'Discard',
254
- });
255
- }
256
- /**
257
- * Closes the confirmation dialog.
258
- *
259
- * This method can be used to manually close the confirmation dialog.
260
- */
261
- closeConfirmationDialog() {
262
- // Close the confirmation dialog
263
- this._confirmationService.closeDialog();
264
- }
265
- /**
266
- * Retrieves the confirmation emitter from the confirmation service.
267
- *
268
- * @returns The confirmation emitter used for emitting confirmation events.
269
- */
270
- getConformationEmitter() {
271
- return this._confirmationService.getConformationEmitter();
272
- }
273
- /**
274
- * Retrieves the dialog emitter from the confirmation service.
275
- *
276
- * The dialog emitter is an RxJS Subject that emits whenever a confirmation dialog is
277
- * opened or closed. The value emitted is a boolean indicating whether a dialog is
278
- * currently open.
279
- *
280
- * @returns The dialog emitter used for emitting confirmation dialog events.
281
- */
282
- getDialogEmitter() {
283
- return this._confirmationService.getDialogEmitter();
284
- }
285
- /**
286
- * Retrieves the remove emitter from the confirmation service.
287
- *
288
- * The remove emitter is an RxJS Subject that emits whenever a removal confirmation
289
- * dialog is opened or closed. The value emitted is a boolean indicating whether a
290
- * removal dialog is currently open.
291
- *
292
- * @returns The remove emitter used for emitting removal confirmation dialog events.
293
- */
294
- getRemoveEmitter() {
295
- return this._confirmationService.getRemoveEmitter();
296
- }
297
- /**
298
- * Copies the provided text to the clipboard and displays a success notification.
299
- *
300
- * @param text - The text to be copied to the clipboard.
301
- */
302
- copyToClipboard(text) {
303
- // Create a temporary input element to hold the text
304
- const tempInput = document.createElement("input");
305
- // Set the input's value to the text to be copied
306
- tempInput.value = text;
307
- // Append the temporary input to the document body
308
- document.body.appendChild(tempInput);
309
- // Select the text in the input element
310
- tempInput.select();
311
- // Execute the copy command
312
- document.execCommand("copy");
313
- // Remove the temporary input from the document body
314
- document.body.removeChild(tempInput);
315
- // Show a success notification
316
- this.showSuccess({
317
- message: "",
318
- title: "Copied to clipboard!",
319
- configuration: {
320
- timeOut: 1000,
321
- positionClass: 'toast-top-center',
322
- easing: 'ease-in',
323
- easeTime: 300,
324
- extendedTimeOut: 2000,
325
- }
326
- });
327
- }
328
- /**
329
- * Copies the current URL to the clipboard and displays a success notification.
330
- */
331
- copyCurrentUrlToClipboard() {
332
- // Use the copyToClipboard method to copy the current window URL
333
- this.copyToClipboard(window.location.href);
334
- }
335
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
336
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UiService, providedIn: 'root' });
337
- }
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UiService, decorators: [{
339
- type: Injectable,
340
- args: [{
341
- providedIn: 'root'
342
- }]
343
- }] });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL2xpYi91aS91aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFnRCxtQkFBbUIsRUFBdUIsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFLL0ssTUFBTSxPQUFPLFNBQVM7SUFDRCxvQkFBb0IsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDeEUsb0JBQW9CLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXpGOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQTBCO1FBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFMUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNYLEtBQUssaUJBQWlCLENBQUMsT0FBTztnQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUVWLEtBQUssaUJBQWlCLENBQUMsS0FBSztnQkFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUVWLEtBQUssaUJBQWlCLENBQUMsT0FBTztnQkFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUVWLEtBQUssaUJBQWlCLENBQUMsTUFBTTtnQkFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENB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QUcsSUFBSSxDQUFDO1FBRXZCLGtEQUFrRDtRQUNsRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyQyx1Q0FBdUM7UUFDdkMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5CLDJCQUEyQjtRQUMzQixRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdCLG9EQUFvRDtRQUNwRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyQyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNiLE9BQU8sRUFBRSxFQUFFO1lBQ1gsS0FBSyxFQUFFLHNCQUFzQjtZQUM3QixhQUFhLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsYUFBYSxFQUFFLGtCQUFrQjtnQkFDakMsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFFBQVEsRUFBRSxHQUFHO2dCQUNiLGVBQWUsRUFBRSxJQUFJO2FBQ3hCO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gseUJBQXlCO1FBQ3JCLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQzt3R0FwWVEsU0FBUzs0R0FBVCxTQUFTLGNBRk4sTUFBTTs7NEZBRVQsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgU2NyZWVuT3Blbk9wdGlvbnMsXG4gICAgTmF2aWdhdGlvbk9wdGlvbnMsXG4gICAgQmFzZVNjcmVlbk9wdGlvbnMsXG4gICAgTmF2aWdhdGVUb1N1YmRvbWFpbk9wdGlvbnNcbn0gZnJvbSAnLi4vaW50ZXJmYWNlL3VpLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uVHlwZSwgU2NyZWVuRGlzcGxheU1vZGUgfSBmcm9tICcuLi9lbnVtL3VpLmVudW0nO1xuaW1wb3J0IHsgVGFiU2RrIH0gZnJvbSAnLi4vdGFiLXNkay5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VOb3RpZmljYXRpb25PcHRpb25zLCBDb25maXJtYXRpb25PcHRpb25zLCBDb25maXJtYXRpb25TZXJ2aWNlLCBOb3RpZmljYXRpb25PcHRpb25zLCBOb3RpZmljYXRpb25TZXJ2aWNlLCBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVaVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSA9IGluamVjdChDb25maXJtYXRpb25TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIE9wZW4gYSBzY3JlZW4gd2l0aCB0aGUgZ2l2ZW4gb3B0aW9ucy4gVGhlIG1vZGUgZGV0ZXJtaW5lcyBob3cgdGhlIHNjcmVlbiBpc1xuICAgICAqIGRpc3BsYXllZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBvcGVuaW5nIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgb3BlblNjcmVlbihvcHRpb25zOiBTY3JlZW5PcGVuT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IG1vZGUsIC4uLm90aGVyT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2NyZWVuRGlzcGxheU1vZGUuU2lkZWJhcjpcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTaWRlYmFyKG90aGVyT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2NyZWVuRGlzcGxheU1vZGUuUG9wdXA6XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RGlhbG9nKG90aGVyT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2NyZWVuRGlzcGxheU1vZGUuU2FtZVRhYjpcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG8ob3RoZXJPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTY3JlZW5EaXNwbGF5TW9kZS5OZXdUYWI6XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuSW5OZXdUYWIob3RoZXJPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgc2NyZWVuIGluIGEgc2lkZWJhci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBvcGVuaW5nIHRoZSBzaWRlYmFyLlxuICAgICAqL1xuICAgIHNob3dTaWRlYmFyKG9wdGlvbnM6IEJhc2VTY3JlZW5PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG90aGVyQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnRpdGxlICYmIHsgdGl0bGU6IG9wdGlvbnMudGl0bGUgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy53aWR0aCAmJiB7IHdpZHRoOiBvcHRpb25zLndpZHRoIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMuaGVpZ2h0ICYmIHsgaGVpZ2h0OiBvcHRpb25zLmhlaWdodCB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLmN1c3RvbUNsYXNzICYmIHsgY3VzdG9tQ2xhc3M6IG9wdGlvbnMuY3VzdG9tQ2xhc3MgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5yZWZyZXNoZXIgJiYgeyByZWZyZXNoZXI6IG9wdGlvbnMucmVmcmVzaGVyIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMuY2xvc2VyICYmIHsgY2xvc2VyOiBvcHRpb25zLmNsb3NlciB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIFRhYlNkay51dGlsPy5vcGVuU2NyZWVuKFxuICAgICAgICAgICAgU2NyZWVuRGlzcGxheU1vZGUuU2lkZWJhcixcbiAgICAgICAgICAgIG9wdGlvbnMuc2NyZWVuSWQsXG4gICAgICAgICAgICBvcHRpb25zLnJlcXRva2VucyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBvcHRpb25zLnN1Ym1pc3Npb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgT2JqZWN0LmtleXMob3RoZXJDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwID8gb3RoZXJDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBzY3JlZW4gaW4gYSBwb3B1cCBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3Igb3BlbmluZyB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIHNob3dEaWFsb2cob3B0aW9uczogQmFzZVNjcmVlbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3RoZXJDb25maWd1cmF0aW9uID0ge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMudGl0bGUgJiYgeyB0aXRsZTogb3B0aW9ucy50aXRsZSB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLndpZHRoICYmIHsgd2lkdGg6IG9wdGlvbnMud2lkdGggfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5oZWlnaHQgJiYgeyBoZWlnaHQ6IG9wdGlvbnMuaGVpZ2h0IH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMuY3VzdG9tQ2xhc3MgJiYgeyBjdXN0b21DbGFzczogb3B0aW9ucy5jdXN0b21DbGFzcyB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnJlZnJlc2hlciAmJiB7IHJlZnJlc2hlcjogb3B0aW9ucy5yZWZyZXNoZXIgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5jbG9zZXIgJiYgeyBjbG9zZXI6IG9wdGlvbnMuY2xvc2VyIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgVGFiU2RrLnV0aWw/Lm9wZW5TY3JlZW4oXG4gICAgICAgICAgICBTY3JlZW5EaXNwbGF5TW9kZS5Qb3B1cCxcbiAgICAgICAgICAgIG9wdGlvbnMuc2NyZWVuSWQsXG4gICAgICAgICAgICBvcHRpb25zLnJlcXRva2VucyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBvcHRpb25zLnN1Ym1pc3Npb24gfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgT2JqZWN0LmtleXMob3RoZXJDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwID8gb3RoZXJDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIGEgc2NyZWVuIHdpdGhpbiB0aGUgc2FtZSB0YWIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBuYXZpZ2F0aW9uLCBpbmNsdWRpbmcgc2NyZWVuSWQgYW5kIG9wdGlvbmFsIHJlcXRva2Vucy5cbiAgICAgKi9cbiAgICBuYXZpZ2F0ZVRvKG9wdGlvbnM6IE5hdmlnYXRpb25PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIFRhYlNkay51dGlsPy5vcGVuU2NyZWVuKFxuICAgICAgICAgICAgU2NyZWVuRGlzcGxheU1vZGUuU2FtZVRhYixcbiAgICAgICAgICAgIG9wdGlvbnMuc2NyZWVuSWQsXG4gICAgICAgICAgICBvcHRpb25zLnJlcXRva2VucyB8fCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gYSBzY3JlZW4gaW4gYSBuZXcgdGFiLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIG5hdmlnYXRpb24sIGluY2x1ZGluZyBzY3JlZW5JZCBhbmQgb3B0aW9uYWwgcmVxdG9rZW5zLlxuICAgICAqL1xuICAgIG9wZW5Jbk5ld1RhYihvcHRpb25zOiBOYXZpZ2F0aW9uT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBUYWJTZGsudXRpbD8ub3BlblNjcmVlbihcbiAgICAgICAgICAgIFNjcmVlbkRpc3BsYXlNb2RlLk5ld1RhYixcbiAgICAgICAgICAgIG9wdGlvbnMuc2NyZWVuSWQsXG4gICAgICAgICAgICBvcHRpb25zLnJlcXRva2VucyB8fCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHNwZWNpZmllZCBVUkwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCB0byBuYXZpZ2F0ZSB0by5cbiAgICAgKi9cbiAgICBuYXZpZ2F0ZVRvVXJsKHBhcmFtczogeyB1cmw6IHN0cmluZywgZXh0cmFzPzogYW55LCByZXBsYWNlVXJsPzogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgICAgIFRhYlNkay51dGlsPy5uYXZpZ2F0ZVRvKHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIHR5cGU6IE5hdmlnYXRpb25UeXBlLk5hdmlnYXRlVG9VcmxcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gYSBzcGVjaWZpZWQgc3ViZG9tYWluIHVzaW5nIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgbmF2aWdhdGlvbiwgaW5jbHVkaW5nIHN1YkRvbWFpbiwgYXBwQ29kZSwgYW5kIHVybC5cbiAgICAgKi9cbiAgICBuYXZpZ2F0ZVRvU3ViZG9tYWluKG9wdGlvbnM6IE5hdmlnYXRlVG9TdWJkb21haW5PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIFRhYlNkay51dGlsPy5uYXZpZ2F0ZVRvKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0eXBlOiBOYXZpZ2F0aW9uVHlwZS5OYXZpZ2F0ZVRvU3ViZG9tYWluXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBhY3RpdmUgc2NyZWVuIElEIGZyb20gdGhlIGN1cnJlbnQgVVJMLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHNjcmVlbiBJRCBpZiBwcmVzZW50IGluIHRoZSBVUkwsIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAgICovXG4gICAgZ2V0QWN0aXZlVXJsU2NyZWVuSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gU3BsaXQgdGhlIFVSTCBwYXRobmFtZSBpbnRvIHBhcnRzIHVzaW5nIHRoZSAnLycgY2hhcmFjdGVyIGFzIGEgZGVsaW1pdGVyXG4gICAgICAgIGNvbnN0IHVybFBhcnRzID0gd2luZG93Py5sb2NhdGlvbj8ucGF0aG5hbWU/LnNwbGl0KCcvJyk7XG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIHNjcmVlbiBJRCBwYXJ0IGFuZCByZW1vdmUgYW55IHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICAgICAgY29uc3Qgc2NyZWVuSWQgPSB1cmxQYXJ0cz8ubGVuZ3RoID4gMSA/IHVybFBhcnRzPy5bdXJsUGFydHM/Lmxlbmd0aCAtIDFdPy5zcGxpdCgnPycpWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIHNjcmVlbiBJRCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAgICAgIHJldHVybiBzY3JlZW5JZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGFjdGl2ZSByZWRpcmVjdCBVUkwgYnkgY29tYmluaW5nIHRoZSBhY3RpdmUgc2NyZWVuIElEIGFuZCBhbnkgcXVlcnkgcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjb25zdHJ1Y3RlZCByZWRpcmVjdCBVUkwgb3IgdW5kZWZpbmVkIGlmIG5vIHNjcmVlbiBJRCBpcyBwcmVzZW50LlxuICAgICAqL1xuICAgIGdldEFjdGl2ZVJlZGlyZWN0VXJsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIC8vIEdldCB0aGUgYWN0aXZlIHNjcmVlbiBJRCBmcm9tIHRoZSBjdXJyZW50IFVSTFxuICAgICAgICBjb25zdCBzY3JlZW5JZCA9IHRoaXMuZ2V0QWN0aXZlVXJsU2NyZWVuSWQoKTtcbiAgICAgICAgbGV0IHJlZGlyZWN0VVJMO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IFVSTCBjb250YWlucyBhIHNjcmVlbiBJRFxuICAgICAgICBpZiAoc2NyZWVuSWQpIHtcbiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHJlZGlyZWN0IFVSTCB3aXRoIHRoZSBzY3JlZW4gSURcbiAgICAgICAgICAgIHJlZGlyZWN0VVJMID0gc2NyZWVuSWQ7XG5cbiAgICAgICAgICAgIC8vIFBhcnNlIHRoZSBjdXJyZW50IFVSTCdzIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHF1ZXJ5IHBhcmFtZXRlcnMsIGFwcGVuZCB0aGVtIHRvIHRoZSByZWRpcmVjdCBVUkxcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtcy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVUkwgKz0gYCYke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiB0aGUgY29uc3RydWN0ZWQgcmVkaXJlY3QgVVJMIG9yIHVuZGVmaW5lZFxuICAgICAgICByZXR1cm4gcmVkaXJlY3RVUkw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyBhIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgbm90aWZpY2F0aW9uLlxuICAgICAqL1xuICAgIG5vdGlmeShvcHRpb25zOiBOb3RpZmljYXRpb25PcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmeSh7XG4gICAgICAgICAgICB0eXBlOiBvcHRpb25zLnR5cGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBUYWJTZGsudHJhbnNsYXRvci50cmFuc2xhdGUob3B0aW9ucy5tZXNzYWdlKSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zPy50aXRsZSA/IHsgdGl0bGU6IFRhYlNkay50cmFuc2xhdG9yLnRyYW5zbGF0ZShvcHRpb25zLnRpdGxlKSB9IDoge30pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnM/LmNvbmZpZ3VyYXRpb24gPyB7IGNvbmZpZ3VyYXRpb246IG9wdGlvbnMuY29uZmlndXJhdGlvbiB9IDoge30pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBhIHN1Y2Nlc3Mgbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIG5vdGlmaWNhdGlvbiwgaW5jbHVkaW5nIG1lc3NhZ2UsIHRpdGxlLCBhbmQgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBzaG93U3VjY2VzcyhvcHRpb25zOiBCYXNlTm90aWZpY2F0aW9uT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3RpZnkoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuU3VjY2VzcyxcbiAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zPy50aXRsZSA/PyAnU3VjY2VzcydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSB3YXJuaW5nIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24sIGluY2x1ZGluZyBtZXNzYWdlLCB0aXRsZSwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc2hvd1dhcm5pbmcob3B0aW9uczogQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZ5KHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLldhcm5pbmcsXG4gICAgICAgICAgICB0aXRsZTogb3B0aW9ucz8udGl0bGUgPz8gJ1dhcm5pbmcnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIGFuIGluZm8gbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIG5vdGlmaWNhdGlvbiwgaW5jbHVkaW5nIG1lc3NhZ2UsIHRpdGxlLCBhbmQgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBzaG93SW5mbyhvcHRpb25zOiBCYXNlTm90aWZpY2F0aW9uT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3RpZnkoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuSW5mbyxcbiAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zPy50aXRsZSA/PyAnSW5mbydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYW4gZXJyb3Igbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIG5vdGlmaWNhdGlvbiwgaW5jbHVkaW5nIG1lc3NhZ2UsIHRpdGxlLCBhbmQgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBzaG93RXJyb3Iob3B0aW9uczogQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZ5KHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLkVycm9yLFxuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnM/LnRpdGxlID8/ICdFcnJvcidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIGEgbm90aWZpY2F0aW9uIGJ5IElELlxuICAgICAqXG4gICAgICogQHBhcmFtIG5vdGlmaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBub3RpZmljYXRpb24gdG8gY2xlYXIuXG4gICAgICogQHJldHVybnMgVGhlIGNsZWFyZWQgbm90aWZpY2F0aW9uLCBvciBudWxsIGlmIHRoZSBub3RpZmljYXRpb24gZG9lc24ndCBleGlzdC5cbiAgICAgKi9cbiAgICBjbGVhck5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgdG8gdGhlIHVzZXIgYW5kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXNcbiAgICAgKiB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1c2VyIGNvbmZpcm1lZCB0aGUgYWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2csIGluY2x1ZGluZyB0aXRsZSwgbWVzc2FnZSxcbiAgICAgKiBjb25maXJtVGV4dCwgY2FuY2VsVGV4dCwgYW5kIHZpc2liaWxpdHkgb2YgYnV0dG9ucy5cbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0cnVlIGlmIHRoZSB1c2VyIGNvbmZpcm1zLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgY29uZmlybShvcHRpb25zPzogQ29uZmlybWF0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShvcHRpb25zKVxuICAgICAgICAgICAgICAgID8uc3Vic2NyaWJlKChpc0NvbmZpcm1lZDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGlzQ29uZmlybWVkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSBjb25maXJtYXRpb24gZGlhbG9nIHRvIHRoZSB1c2VyIHdpdGggYSB0aXRsZSBhbmQgbWVzc2FnZSB0aGF0IGluZGljYXRlc1xuICAgICAqIHRoZSB1c2VyIGlzIGFib3V0IHRvIGRlbGV0ZSBhbiBpdGVtLiBUaGUgY29uZmlybWF0aW9uIGRpYWxvZyBoYXMgYSBcIkRlbGV0ZVwiIGFuZCBcIkNhbmNlbFwiXG4gICAgICogYnV0dG9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2csIGluY2x1ZGluZyB0aGUgaXRlbSBuYW1lIGFuZFxuICAgICAqIG9wdGlvbmFsIG1lc3NhZ2UuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGNvbmZpcm1EZWxldGUob3B0aW9ucz86IENvbmZpcm1hdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogb3B0aW9ucz8udGl0bGUgPz8gYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByZWNvcmRgLFxuICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucz8ubWVzc2FnZSA/PyBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIHJlY29yZC4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHByb2NlZWQ/YCxcbiAgICAgICAgICAgIHByaW1hcnlPcHRpb246ICdEZWxldGUnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgdG8gdGhlIHVzZXIgd2l0aCBhIHRpdGxlIGFuZCBtZXNzYWdlIHRoYXQgaW5kaWNhdGVzXG4gICAgICogdGhlIHVzZXIgaXMgYWJvdXQgdG8gZGlzY2FyZCBjaGFuZ2VzIHRvIGFuIGl0ZW0uIFRoZSBjb25maXJtYXRpb24gZGlhbG9nIGhhcyBhIFwiRGlzY2FyZFwiXG4gICAgICogYW5kIFwiQ2FuY2VsXCIgYnV0dG9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2csIGluY2x1ZGluZyB0aGUgaXRlbSBuYW1lIGFuZFxuICAgICAqIG9wdGlvbmFsIG1lc3NhZ2UuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGNvbmZpcm1EaXNjYXJkKG9wdGlvbnM/OiBDb25maXJtYXRpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGlzY2FyZCB5b3VyIGNoYW5nZXNgLFxuICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucz8ubWVzc2FnZSA/PyBgWW91IGFyZSBhYm91dCB0byBkaXNjYXJkIHlvdXIgY2hhbmdlcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHByb2NlZWQ/YCxcbiAgICAgICAgICAgIHByaW1hcnlPcHRpb246ICdEaXNjYXJkJyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gbWFudWFsbHkgY2xvc2UgdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAgICovXG4gICAgY2xvc2VDb25maXJtYXRpb25EaWFsb2coKSB7XG4gICAgICAgIC8vIENsb3NlIHRoZSBjb25maXJtYXRpb24gZGlhbG9nXG4gICAgICAgIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuY2xvc2VEaWFsb2coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNvbmZpcm1hdGlvbiBlbWl0dGVyIGZyb20gdGhlIGNvbmZpcm1hdGlvbiBzZXJ2aWNlLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBjb25maXJtYXRpb24gZW1pdHRlciB1c2VkIGZvciBlbWl0dGluZyBjb25maXJtYXRpb24gZXZlbnRzLlxuICAgICAqL1xuICAgIGdldENvbmZvcm1hdGlvbkVtaXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maXJtYXRpb25TZXJ2aWNlLmdldENvbmZvcm1hdGlvbkVtaXR0ZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGRpYWxvZyBlbWl0dGVyIGZyb20gdGhlIGNvbmZpcm1hdGlvbiBzZXJ2aWNlLlxuICAgICAqXG4gICAgICogVGhlIGRpYWxvZyBlbWl0dGVyIGlzIGFuIFJ4SlMgU3ViamVjdCB0aGF0IGVtaXRzIHdoZW5ldmVyIGEgY29uZmlybWF0aW9uIGRpYWxvZyBpc1xuICAgICAqIG9wZW5lZCBvciBjbG9zZWQuIFRoZSB2YWx1ZSBlbWl0dGVkIGlzIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgYSBkaWFsb2cgaXNcbiAgICAgKiBjdXJyZW50bHkgb3Blbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBkaWFsb2cgZW1pdHRlciB1c2VkIGZvciBlbWl0dGluZyBjb25maXJtYXRpb24gZGlhbG9nIGV2ZW50cy5cbiAgICAgKi9cbiAgICBnZXREaWFsb2dFbWl0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlybWF0aW9uU2VydmljZS5nZXREaWFsb2dFbWl0dGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSByZW1vdmUgZW1pdHRlciBmcm9tIHRoZSBjb25maXJtYXRpb24gc2VydmljZS5cbiAgICAgKiBcbiAgICAgKiBUaGUgcmVtb3ZlIGVtaXR0ZXIgaXMgYW4gUnhKUyBTdWJqZWN0IHRoYXQgZW1pdHMgd2hlbmV2ZXIgYSByZW1vdmFsIGNvbmZpcm1hdGlvblxuICAgICAqIGRpYWxvZyBpcyBvcGVuZWQgb3IgY2xvc2VkLiBUaGUgdmFsdWUgZW1pdHRlZCBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGFcbiAgICAgKiByZW1vdmFsIGRpYWxvZyBpcyBjdXJyZW50bHkgb3Blbi5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgcmVtb3ZlIGVtaXR0ZXIgdXNlZCBmb3IgZW1pdHRpbmcgcmVtb3ZhbCBjb25maXJtYXRpb24gZGlhbG9nIGV2ZW50cy5cbiAgICAgKi9cbiAgICBnZXRSZW1vdmVFbWl0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlybWF0aW9uU2VydmljZS5nZXRSZW1vdmVFbWl0dGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHRoZSBwcm92aWRlZCB0ZXh0IHRvIHRoZSBjbGlwYm9hcmQgYW5kIGRpc3BsYXlzIGEgc3VjY2VzcyBub3RpZmljYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCB0byB0aGUgY2xpcGJvYXJkLlxuICAgICAqL1xuICAgIGNvcHlUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGlucHV0IGVsZW1lbnQgdG8gaG9sZCB0aGUgdGV4dFxuICAgICAgICBjb25zdCB0ZW1wSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cbiAgICAgICAgLy8gU2V0IHRoZSBpbnB1dCdzIHZhbHVlIHRvIHRoZSB0ZXh0IHRvIGJlIGNvcGllZFxuICAgICAgICB0ZW1wSW5wdXQudmFsdWUgPSB0ZXh0O1xuXG4gICAgICAgIC8vIEFwcGVuZCB0aGUgdGVtcG9yYXJ5IGlucHV0IHRvIHRoZSBkb2N1bWVudCBib2R5XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVtcElucHV0KTtcblxuICAgICAgICAvLyBTZWxlY3QgdGhlIHRleHQgaW4gdGhlIGlucHV0IGVsZW1lbnRcbiAgICAgICAgdGVtcElucHV0LnNlbGVjdCgpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNvcHkgY29tbWFuZFxuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZChcImNvcHlcIik7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhcnkgaW5wdXQgZnJvbSB0aGUgZG9jdW1lbnQgYm9keVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlbXBJbnB1dCk7XG5cbiAgICAgICAgLy8gU2hvdyBhIHN1Y2Nlc3Mgbm90aWZpY2F0aW9uXG4gICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3Moe1xuICAgICAgICAgICAgbWVzc2FnZTogXCJcIixcbiAgICAgICAgICAgIHRpdGxlOiBcIkNvcGllZCB0byBjbGlwYm9hcmQhXCIsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgdGltZU91dDogMTAwMCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbkNsYXNzOiAndG9hc3QtdG9wLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgZWFzaW5nOiAnZWFzZS1pbicsXG4gICAgICAgICAgICAgICAgZWFzZVRpbWU6IDMwMCxcbiAgICAgICAgICAgICAgICBleHRlbmRlZFRpbWVPdXQ6IDIwMDAsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyB0aGUgY3VycmVudCBVUkwgdG8gdGhlIGNsaXBib2FyZCBhbmQgZGlzcGxheXMgYSBzdWNjZXNzIG5vdGlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBjb3B5Q3VycmVudFVybFRvQ2xpcGJvYXJkKCkge1xuICAgICAgICAvLyBVc2UgdGhlIGNvcHlUb0NsaXBib2FyZCBtZXRob2QgdG8gY29weSB0aGUgY3VycmVudCB3aW5kb3cgVVJMXG4gICAgICAgIHRoaXMuY29weVRvQ2xpcGJvYXJkKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICB9XG59Il19
@@ -1,54 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class UtilService {
4
- // Will store the services from context
5
- _isProxy = true;
6
- _context = null;
7
- _initialized = false;
8
- /**
9
- * Initializes the UtilService with context that contains service references
10
- *
11
- * @param context The context object containing service references
12
- * @returns A proxy that intercepts and delegates method calls to the appropriate service
13
- */
14
- init(context) {
15
- if (this._initialized) {
16
- return this;
17
- }
18
- this._context = context;
19
- this._initialized = true;
20
- // Return a proxy that will intercept method calls
21
- return new Proxy(this, {
22
- get: (target, prop) => {
23
- // First check if the property exists directly on UtilService
24
- if (prop in target) {
25
- return target[prop];
26
- }
27
- // Convert symbol to string if needed
28
- const propName = prop.toString();
29
- // Check context services first
30
- if (this._context && Object.keys(this._context).length > 0) {
31
- // Loop through each service in the context
32
- for (const serviceName of Object.keys(this._context)) {
33
- const service = this._context[serviceName];
34
- if (service && typeof service === 'object' && propName in service && typeof service[propName] === 'function') {
35
- // Return the bound function from the service
36
- return service[propName].bind(service);
37
- }
38
- }
39
- }
40
- // If property not found anywhere, return undefined
41
- return undefined;
42
- }
43
- });
44
- }
45
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
46
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilService, providedIn: 'root' });
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilService, decorators: [{
49
- type: Injectable,
50
- args: [{
51
- providedIn: 'root'
52
- }]
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL3V0aWwvdXRpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLHVDQUF1QztJQUMvQixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLFFBQVEsR0FBUSxJQUFJLENBQUM7SUFDckIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUU3Qjs7Ozs7T0FLRztJQUNILElBQUksQ0FBQyxPQUFZO1FBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLGtEQUFrRDtRQUNsRCxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNuQixHQUFHLEVBQUUsQ0FBQyxNQUFXLEVBQUUsSUFBcUIsRUFBRSxFQUFFO2dCQUN4Qyw2REFBNkQ7Z0JBQzdELElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNqQixPQUFRLE1BQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsQ0FBQztnQkFFRCxxQ0FBcUM7Z0JBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFakMsK0JBQStCO2dCQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN6RCwyQ0FBMkM7b0JBQzNDLEtBQUssTUFBTSxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQzt3QkFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7NEJBQzNHLDZDQUE2Qzs0QkFDN0MsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMzQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxtREFBbUQ7Z0JBQ25ELE9BQU8sU0FBUyxDQUFDO1lBQ3JCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO3dHQS9DUSxXQUFXOzRHQUFYLFdBQVcsY0FGUixNQUFNOzs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVdGlsU2VydmljZSB7XG4gICAgLy8gV2lsbCBzdG9yZSB0aGUgc2VydmljZXMgZnJvbSBjb250ZXh0XG4gICAgcHJpdmF0ZSBfaXNQcm94eSA9IHRydWU7XG4gICAgcHJpdmF0ZSBfY29udGV4dDogYW55ID0gbnVsbDtcbiAgICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIFV0aWxTZXJ2aWNlIHdpdGggY29udGV4dCB0aGF0IGNvbnRhaW5zIHNlcnZpY2UgcmVmZXJlbmNlc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9iamVjdCBjb250YWluaW5nIHNlcnZpY2UgcmVmZXJlbmNlc1xuICAgICAqIEByZXR1cm5zIEEgcHJveHkgdGhhdCBpbnRlcmNlcHRzIGFuZCBkZWxlZ2F0ZXMgbWV0aG9kIGNhbGxzIHRvIHRoZSBhcHByb3ByaWF0ZSBzZXJ2aWNlXG4gICAgICovXG4gICAgaW5pdChjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBSZXR1cm4gYSBwcm94eSB0aGF0IHdpbGwgaW50ZXJjZXB0IG1ldGhvZCBjYWxsc1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHtcbiAgICAgICAgICAgIGdldDogKHRhcmdldDogYW55LCBwcm9wOiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgcHJvcGVydHkgZXhpc3RzIGRpcmVjdGx5IG9uIFV0aWxTZXJ2aWNlXG4gICAgICAgICAgICAgICAgaWYgKHByb3AgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAodGFyZ2V0IGFzIGFueSlbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQ29udmVydCBzeW1ib2wgdG8gc3RyaW5nIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BOYW1lID0gcHJvcC50b1N0cmluZygpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgY29udGV4dCBzZXJ2aWNlcyBmaXJzdFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZXh0ICYmIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRleHQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggc2VydmljZSBpbiB0aGUgY29udGV4dFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlcnZpY2VOYW1lIG9mIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5fY29udGV4dFtzZXJ2aWNlTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VydmljZSAmJiB0eXBlb2Ygc2VydmljZSA9PT0gJ29iamVjdCcgJiYgcHJvcE5hbWUgaW4gc2VydmljZSAmJiB0eXBlb2Ygc2VydmljZVtwcm9wTmFtZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIGJvdW5kIGZ1bmN0aW9uIGZyb20gdGhlIHNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VydmljZVtwcm9wTmFtZV0uYmluZChzZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIElmIHByb3BlcnR5IG5vdCBmb3VuZCBhbnl3aGVyZSwgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXX0=