@techextensor/tab-sdk 0.0.2 → 0.0.3

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.
@@ -0,0 +1,163 @@
1
+ import { inject, Injectable } from "@angular/core";
2
+ import { AuthService } from "../core/auth.service";
3
+ import { TabSdk } from "../tab-sdk.service";
4
+ import * as i0 from "@angular/core";
5
+ export class UtilsService {
6
+ _authService = inject(AuthService);
7
+ _helperFunctionService = TabSdk.context?.HelperFunctionService;
8
+ /**
9
+ * Extracts the event name from various event parameter structures
10
+ *
11
+ * @example
12
+ * const eventName = sdk.utils.extractEventName(screenParameters.event);
13
+ * if (eventName === 'deleteDocument') {
14
+ * // Handle delete document event
15
+ * }
16
+ */
17
+ extractEventName(event) {
18
+ if (!event)
19
+ return '';
20
+ // Check common patterns for event names
21
+ return event.event?.component?.configuration?.configScreen?.componentValue?.eventName ??
22
+ event.detail?.type ??
23
+ event.type ??
24
+ event.name ??
25
+ '';
26
+ }
27
+ /**
28
+ * Builds an application URL with the specified path and parameters
29
+ *
30
+ * @example
31
+ * // Get full URL with protocol
32
+ * const fullUrl = sdk.utils.buildAppUrl('screen/12345', { id: '12345' });
33
+ */
34
+ buildAppUrl(path, parameters, includeProtocol = true) {
35
+ const appCode = this._authService.getAppCode();
36
+ const params = new URLSearchParams();
37
+ // Add parameters to the URL
38
+ if (parameters) {
39
+ Object.entries(parameters).forEach(([key, value]) => {
40
+ if (value !== undefined && value !== null) {
41
+ params.append(key, String(value));
42
+ }
43
+ });
44
+ }
45
+ // Build query string
46
+ const queryString = params.toString() ? `?${params.toString()}` : '';
47
+ // Build URL
48
+ if (includeProtocol) {
49
+ const host = window.location.host;
50
+ return `http://${host}/${appCode}/${path}${queryString}`;
51
+ }
52
+ else {
53
+ return `/${appCode}/${path}${queryString}`;
54
+ }
55
+ }
56
+ /**
57
+ * Generates and copies a screen URL to the clipboard
58
+ *
59
+ * @example
60
+ * // Copy URL to clipboard
61
+ * sdk.utils.copyScreenLink('12345', { id: '12345' });
62
+ */
63
+ copyScreenLinkToClipboard(screenId, parameters) {
64
+ const url = this.buildAppUrl(`screen/${screenId}`, parameters);
65
+ return this._helperFunctionService.copyToClipboard(url);
66
+ }
67
+ /**
68
+ * Downloads a blob as a file
69
+ *
70
+ * @example
71
+ * // Download a blob as 'report.pdf'
72
+ * const pdfBlob = new Blob([pdfContent], { type: 'application/pdf' });
73
+ * sdk.utils.downloadBlob(pdfBlob, 'report.pdf');
74
+ */
75
+ downloadBlob(blob, filename) {
76
+ // Create object URL
77
+ const url = URL.createObjectURL(blob);
78
+ // Create download link
79
+ const downloadLink = document.createElement('a');
80
+ downloadLink.href = url;
81
+ downloadLink.download = filename;
82
+ // Append to body, click, and remove
83
+ document.body.appendChild(downloadLink);
84
+ downloadLink.click();
85
+ document.body.removeChild(downloadLink);
86
+ // Release object URL after a short delay to ensure download starts
87
+ setTimeout(() => URL.revokeObjectURL(url), 100);
88
+ }
89
+ /**
90
+ * Exports HTML content as a Word document (.doc)
91
+ *
92
+ * @example
93
+ * // Export editor content as Word document
94
+ * sdk.utils.exportAsWord(editorContent, 'report');
95
+ */
96
+ exportAsWord(content, filename = 'document') {
97
+ // Format content with Word-compatible namespaces
98
+ const docContent = `
99
+ <html xmlns:o="urn:schemas-microsoft-com:office:office"
100
+ xmlns:w="urn:schemas-microsoft-com:office:word"
101
+ xmlns="http://www.w3.org/TR/REC-html40">
102
+ <head>
103
+ <meta charset="utf-8">
104
+ <title>${filename}</title>
105
+ </head>
106
+ <body>${content}</body>
107
+ </html>`;
108
+ // Create blob with BOM for Word compatibility
109
+ const blob = new Blob(['\ufeff', docContent], {
110
+ type: 'application/msword'
111
+ });
112
+ // Use the downloadBlob utility
113
+ this.downloadBlob(blob, `${filename}.doc`);
114
+ }
115
+ /**
116
+ * Exports HTML content as PDF using browser print functionality
117
+ *
118
+ * @example
119
+ * // Export content as PDF
120
+ * sdk.utils.exportAsPdf(documentContent, 'Invoice');
121
+ */
122
+ exportAsPdf(content, title = 'Document') {
123
+ // Open new window
124
+ const printWindow = window.open('', '', 'width=800,height=600');
125
+ // Add content with basic styling
126
+ printWindow.document?.write(`
127
+ <html>
128
+ <head>
129
+ <title>${title}</title>
130
+ <style>
131
+ body { font-family: Arial, sans-serif; margin: 20px; }
132
+ @media print {
133
+ body { margin: 0mm; }
134
+ }
135
+ </style>
136
+ </head>
137
+ <body>
138
+ ${content}
139
+ </body>
140
+ </html>
141
+ `);
142
+ // Prepare for printing
143
+ printWindow.document.close();
144
+ printWindow.focus();
145
+ // Use timeout to ensure content is rendered before printing
146
+ setTimeout(() => {
147
+ printWindow.print();
148
+ // Close window after print dialog is closed or printing is complete
149
+ printWindow.addEventListener('afterprint', () => {
150
+ printWindow.close();
151
+ });
152
+ }, 300);
153
+ }
154
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
155
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilsService, providedIn: 'root' });
156
+ }
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilsService, decorators: [{
158
+ type: Injectable,
159
+ args: [{
160
+ providedIn: 'root'
161
+ }]
162
+ }] });
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL2xpYi9jb21tb24vdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUs1QyxNQUFNLE9BQU8sWUFBWTtJQUNKLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELHNCQUFzQixHQUFRLE1BQU0sQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUM7SUFHckY7Ozs7Ozs7O09BUUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdEIsd0NBQXdDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsU0FBUztZQUNqRixLQUFLLENBQUMsTUFBTSxFQUFFLElBQUk7WUFDbEIsS0FBSyxDQUFDLElBQUk7WUFDVixLQUFLLENBQUMsSUFBSTtZQUNWLEVBQUUsQ0FBQztJQUNYLENBQUM7SUFHRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQ1AsSUFBWSxFQUNaLFVBQWdDLEVBQ2hDLGtCQUEyQixJQUFJO1FBRS9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUVyQyw0QkFBNEI7UUFDNUIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFB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LEtBQUssQ0FBQzs7O3lCQUdYLEtBQUs7Ozs7Ozs7OztrQkFTWixPQUFPOzs7U0FHaEIsQ0FBQyxDQUFDO1FBRUgsdUJBQXVCO1FBQ3ZCLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXBCLDREQUE0RDtRQUM1RCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLG9FQUFvRTtZQUNwRSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDNUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQzt3R0EvS1EsWUFBWTs0R0FBWixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9hdXRoLnNlcnZpY2VcIjtcbmltcG9ydCB7IFRhYlNkayB9IGZyb20gXCIuLi90YWItc2RrLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVdGlsc1NlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfaGVscGVyRnVuY3Rpb25TZXJ2aWNlOiBhbnkgPSBUYWJTZGsuY29udGV4dD8uSGVscGVyRnVuY3Rpb25TZXJ2aWNlO1xuICAgIFxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgdGhlIGV2ZW50IG5hbWUgZnJvbSB2YXJpb3VzIGV2ZW50IHBhcmFtZXRlciBzdHJ1Y3R1cmVzXG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBldmVudE5hbWUgPSBzZGsudXRpbHMuZXh0cmFjdEV2ZW50TmFtZShzY3JlZW5QYXJhbWV0ZXJzLmV2ZW50KTtcbiAgICAgKiBpZiAoZXZlbnROYW1lID09PSAnZGVsZXRlRG9jdW1lbnQnKSB7XG4gICAgICogICAvLyBIYW5kbGUgZGVsZXRlIGRvY3VtZW50IGV2ZW50XG4gICAgICogfVxuICAgICAqL1xuICAgIGV4dHJhY3RFdmVudE5hbWUoZXZlbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcblxuICAgICAgICAvLyBDaGVjayBjb21tb24gcGF0dGVybnMgZm9yIGV2ZW50IG5hbWVzXG4gICAgICAgIHJldHVybiBldmVudC5ldmVudD8uY29tcG9uZW50Py5jb25maWd1cmF0aW9uPy5jb25maWdTY3JlZW4/LmNvbXBvbmVudFZhbHVlPy5ldmVudE5hbWUgPz9cbiAgICAgICAgICAgIGV2ZW50LmRldGFpbD8udHlwZSA/P1xuICAgICAgICAgICAgZXZlbnQudHlwZSA/P1xuICAgICAgICAgICAgZXZlbnQubmFtZSA/P1xuICAgICAgICAgICAgJyc7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgYW4gYXBwbGljYXRpb24gVVJMIHdpdGggdGhlIHNwZWNpZmllZCBwYXRoIGFuZCBwYXJhbWV0ZXJzXG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiAvLyBHZXQgZnVsbCBVUkwgd2l0aCBwcm90b2NvbFxuICAgICAqIGNvbnN0IGZ1bGxVcmwgPSBzZGsudXRpbHMuYnVpbGRBcHBVcmwoJ3NjcmVlbi8xMjM0NScsIHsgaWQ6ICcxMjM0NScgfSk7XG4gICAgICovXG4gICAgYnVpbGRBcHBVcmwoXG4gICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgcGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIGluY2x1ZGVQcm90b2NvbDogYm9vbGVhbiA9IHRydWVcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBhcHBDb2RlID0gdGhpcy5fYXV0aFNlcnZpY2UuZ2V0QXBwQ29kZSgpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgICAgICAgLy8gQWRkIHBhcmFtZXRlcnMgdG8gdGhlIFVSTFxuICAgICAgICBpZiAocGFyYW1ldGVycykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1ldGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChrZXksIFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnVpbGQgcXVlcnkgc3RyaW5nXG4gICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGFyYW1zLnRvU3RyaW5nKCkgPyBgPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCA6ICcnO1xuXG4gICAgICAgIC8vIEJ1aWxkIFVSTFxuICAgICAgICBpZiAoaW5jbHVkZVByb3RvY29sKSB7XG4gICAgICAgICAgICBjb25zdCBob3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgICAgICAgICByZXR1cm4gYGh0dHA6Ly8ke2hvc3R9LyR7YXBwQ29kZX0vJHtwYXRofSR7cXVlcnlTdHJpbmd9YDtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGAvJHthcHBDb2RlfS8ke3BhdGh9JHtxdWVyeVN0cmluZ31gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGFuZCBjb3BpZXMgYSBzY3JlZW4gVVJMIHRvIHRoZSBjbGlwYm9hcmRcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIENvcHkgVVJMIHRvIGNsaXBib2FyZFxuICAgICAqIHNkay51dGlscy5jb3B5U2NyZWVuTGluaygnMTIzNDUnLCB7IGlkOiAnMTIzNDUnIH0pO1xuICAgICAqL1xuICAgIGNvcHlTY3JlZW5MaW5rVG9DbGlwYm9hcmQoXG4gICAgICAgIHNjcmVlbklkOiBzdHJpbmcsXG4gICAgICAgIHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgKTogYW55IHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5idWlsZEFwcFVybChgc2NyZWVuLyR7c2NyZWVuSWR9YCwgcGFyYW1ldGVycyk7ICAgICAgICBcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlbHBlckZ1bmN0aW9uU2VydmljZS5jb3B5VG9DbGlwYm9hcmQodXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZHMgYSBibG9iIGFzIGEgZmlsZVxuICAgICAqIFxuICAgICAqIEBleGFtcGxlXG4gICAgICogLy8gRG93bmxvYWQgYSBibG9iIGFzICdyZXBvcnQucGRmJ1xuICAgICAqIGNvbnN0IHBkZkJsb2IgPSBuZXcgQmxvYihbcGRmQ29udGVudF0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICogc2RrLnV0aWxzLmRvd25sb2FkQmxvYihwZGZCbG9iLCAncmVwb3J0LnBkZicpO1xuICAgICAqL1xuICAgIGRvd25sb2FkQmxvYihibG9iOiBCbG9iLCBmaWxlbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIENyZWF0ZSBvYmplY3QgVVJMXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGRvd25sb2FkIGxpbmtcbiAgICAgICAgY29uc3QgZG93bmxvYWRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBkb3dubG9hZExpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgZG93bmxvYWRMaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG5cbiAgICAgICAgLy8gQXBwZW5kIHRvIGJvZHksIGNsaWNrLCBhbmQgcmVtb3ZlXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRMaW5rKTtcbiAgICAgICAgZG93bmxvYWRMaW5rLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG93bmxvYWRMaW5rKTtcblxuICAgICAgICAvLyBSZWxlYXNlIG9iamVjdCBVUkwgYWZ0ZXIgYSBzaG9ydCBkZWxheSB0byBlbnN1cmUgZG93bmxvYWQgc3RhcnRzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLCAxMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgSFRNTCBjb250ZW50IGFzIGEgV29yZCBkb2N1bWVudCAoLmRvYylcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIEV4cG9ydCBlZGl0b3IgY29udGVudCBhcyBXb3JkIGRvY3VtZW50XG4gICAgICogc2RrLnV0aWxzLmV4cG9ydEFzV29yZChlZGl0b3JDb250ZW50LCAncmVwb3J0Jyk7XG4gICAgICovXG4gICAgZXhwb3J0QXNXb3JkKGNvbnRlbnQ6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyA9ICdkb2N1bWVudCcpOiB2b2lkIHtcbiAgICAgICAgLy8gRm9ybWF0IGNvbnRlbnQgd2l0aCBXb3JkLWNvbXBhdGlibGUgbmFtZXNwYWNlc1xuICAgICAgICBjb25zdCBkb2NDb250ZW50ID0gYFxuICAgICAgICA8aHRtbCB4bWxuczpvPVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlXCIgXG4gICAgICAgICAgICB4bWxuczp3PVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZFwiIFxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwXCI+XG4gICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XG4gICAgICAgICAgICA8dGl0bGU+JHtmaWxlbmFtZX08L3RpdGxlPlxuICAgICAgICA8L2hlYWQ+XG4gICAgICAgIDxib2R5PiR7Y29udGVudH08L2JvZHk+XG4gICAgICAgIDwvaHRtbD5gO1xuXG4gICAgICAgIC8vIENyZWF0ZSBibG9iIHdpdGggQk9NIGZvciBXb3JkIGNvbXBhdGliaWxpdHlcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFsnXFx1ZmVmZicsIGRvY0NvbnRlbnRdLCB7XG4gICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vbXN3b3JkJ1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVc2UgdGhlIGRvd25sb2FkQmxvYiB1dGlsaXR5XG4gICAgICAgIHRoaXMuZG93bmxvYWRCbG9iKGJsb2IsIGAke2ZpbGVuYW1lfS5kb2NgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgSFRNTCBjb250ZW50IGFzIFBERiB1c2luZyBicm93c2VyIHByaW50IGZ1bmN0aW9uYWxpdHlcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIEV4cG9ydCBjb250ZW50IGFzIFBERlxuICAgICAqIHNkay51dGlscy5leHBvcnRBc1BkZihkb2N1bWVudENvbnRlbnQsICdJbnZvaWNlJyk7XG4gICAgICovXG4gICAgZXhwb3J0QXNQZGYoY29udGVudDogc3RyaW5nLCB0aXRsZTogc3RyaW5nID0gJ0RvY3VtZW50Jyk6IHZvaWQge1xuICAgICAgICAvLyBPcGVuIG5ldyB3aW5kb3dcbiAgICAgICAgY29uc3QgcHJpbnRXaW5kb3c6IGFueSA9IHdpbmRvdy5vcGVuKCcnLCAnJywgJ3dpZHRoPTgwMCxoZWlnaHQ9NjAwJyk7XG5cbiAgICAgICAgLy8gQWRkIGNvbnRlbnQgd2l0aCBiYXNpYyBzdHlsaW5nXG4gICAgICAgIHByaW50V2luZG93LmRvY3VtZW50Py53cml0ZShgXG4gICAgICAgICAgICA8aHRtbD5cbiAgICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgICAgIDx0aXRsZT4ke3RpdGxlfTwvdGl0bGU+XG4gICAgICAgICAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgICAgIGJvZHkgeyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IG1hcmdpbjogMjBweDsgfVxuICAgICAgICAgICAgICAgIEBtZWRpYSBwcmludCB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHkgeyBtYXJnaW46IDBtbTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgICAgPGJvZHk+XG4gICAgICAgICAgICAgICAgJHtjb250ZW50fVxuICAgICAgICAgICAgPC9ib2R5PlxuICAgICAgICAgICAgPC9odG1sPlxuICAgICAgICBgKTtcblxuICAgICAgICAvLyBQcmVwYXJlIGZvciBwcmludGluZ1xuICAgICAgICBwcmludFdpbmRvdy5kb2N1bWVudC5jbG9zZSgpO1xuICAgICAgICBwcmludFdpbmRvdy5mb2N1cygpO1xuXG4gICAgICAgIC8vIFVzZSB0aW1lb3V0IHRvIGVuc3VyZSBjb250ZW50IGlzIHJlbmRlcmVkIGJlZm9yZSBwcmludGluZ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHByaW50V2luZG93LnByaW50KCk7XG4gICAgICAgICAgICAvLyBDbG9zZSB3aW5kb3cgYWZ0ZXIgcHJpbnQgZGlhbG9nIGlzIGNsb3NlZCBvciBwcmludGluZyBpcyBjb21wbGV0ZVxuICAgICAgICAgICAgcHJpbnRXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYWZ0ZXJwcmludCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICBwcmludFdpbmRvdy5jbG9zZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,48 @@
1
+ import { inject, Injectable } from "@angular/core";
2
+ import { LocalStorageService, SessionStorageService, StorageConstants } from "@techextensor/tab-core-utility";
3
+ import * as i0 from "@angular/core";
4
+ export class AuthService {
5
+ _sessionStorageService = inject(SessionStorageService);
6
+ _localStorageService = inject(LocalStorageService);
7
+ /**
8
+ * Get the current application code/identifier
9
+ *
10
+ * @example
11
+ * const appCode = sdk.config.getAppCode();
12
+ */
13
+ getAppCode() {
14
+ return this._sessionStorageService.getSessionStorage(StorageConstants.applicationCode) ?? '';
15
+ }
16
+ /**
17
+ * Get the current user ID
18
+ *
19
+ * @example
20
+ * const userId = sdk.auth.getCurrentUserId();
21
+ */
22
+ getCurrentUserId() {
23
+ const userInfo = this.getCurrentUser();
24
+ return userInfo?.user?.Id ?? '';
25
+ }
26
+ /**
27
+ * Get the current user information
28
+ *
29
+ * @example
30
+ * const user = sdk.auth.getCurrentUser();
31
+ */
32
+ getCurrentUser() {
33
+ const userInfoStr = this._localStorageService.getLocalStorage(StorageConstants.userInfo);
34
+ if (userInfoStr) {
35
+ return JSON.parse(userInfoStr);
36
+ }
37
+ return null;
38
+ }
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, providedIn: 'root' });
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, decorators: [{
43
+ type: Injectable,
44
+ args: [{
45
+ providedIn: 'root'
46
+ }]
47
+ }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL2NvcmUvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUs5RyxNQUFNLE9BQU8sV0FBVztJQUNILHNCQUFzQixHQUEwQixNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM5RSxvQkFBb0IsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFekY7Ozs7O09BS0c7SUFDSCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQjtRQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QyxPQUFPLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjO1FBQ1YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO3dHQXRDUSxXQUFXOzRHQUFYLFdBQVcsY0FGUixNQUFNOzs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsIFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tIFwiQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5XCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBjb2RlL2lkZW50aWZpZXJcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGFwcENvZGUgPSBzZGsuY29uZmlnLmdldEFwcENvZGUoKTtcbiAgICAgKi9cbiAgICBnZXRBcHBDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5hcHBsaWNhdGlvbkNvZGUpID8/ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCB1c2VyIElEXG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCB1c2VySWQgPSBzZGsuYXV0aC5nZXRDdXJyZW50VXNlcklkKCk7XG4gICAgICovXG4gICAgZ2V0Q3VycmVudFVzZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1c2VySW5mbyA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIHVzZXJJbmZvPy51c2VyPy5JZCA/PyAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGN1cnJlbnQgdXNlciBpbmZvcm1hdGlvblxuICAgICAqIFxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgdXNlciA9IHNkay5hdXRoLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICovXG4gICAgZ2V0Q3VycmVudFVzZXIoKTogYW55IHtcbiAgICAgICAgY29uc3QgdXNlckluZm9TdHIgPSB0aGlzLl9sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldExvY2FsU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLnVzZXJJbmZvKTtcbiAgICAgICAgaWYgKHVzZXJJbmZvU3RyKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh1c2VySW5mb1N0cik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59Il19
@@ -0,0 +1,81 @@
1
+ import { inject, Injectable } from "@angular/core";
2
+ import { TabDeleteService, TabInsertService, TabUpdateService } from '@techextensor/tab-core-utility';
3
+ import * as i0 from "@angular/core";
4
+ export class DataService {
5
+ _tabInsertService = inject(TabInsertService);
6
+ _tabUpdateService = inject(TabUpdateService);
7
+ _tabDeleteService = inject(TabDeleteService);
8
+ /**
9
+ * Insert a new record
10
+ *
11
+ * @example
12
+ * const newRecord = await sdk.data.insert('123456', {
13
+ * name: 'ACME Corp',
14
+ * email: 'contact@acme.com'
15
+ * });
16
+ */
17
+ insert(objectId, data) {
18
+ return new Promise((resolve, reject) => {
19
+ this._tabInsertService.insertByObjectId(objectId, { data })
20
+ ?.subscribe((response) => {
21
+ if (response?.StatusCode == 200 && response?.Result) {
22
+ resolve(response.Result);
23
+ }
24
+ else {
25
+ reject(new Error('Failed to insert record'));
26
+ }
27
+ });
28
+ });
29
+ }
30
+ /**
31
+ * Update an existing record
32
+ *
33
+ * @example
34
+ * await sdk.data.update('12345', {
35
+ * Id: '12345',
36
+ * name: 'ACME Corporation',
37
+ * status: 'active'
38
+ * });
39
+ */
40
+ update(objectId, data) {
41
+ return new Promise((resolve, reject) => {
42
+ this._tabUpdateService.updateByObjectId(objectId, { data })
43
+ ?.subscribe((response) => {
44
+ if (response?.StatusCode == 200 && response?.Result) {
45
+ resolve(response.Result);
46
+ }
47
+ else {
48
+ reject(new Error('Failed to update record'));
49
+ }
50
+ });
51
+ });
52
+ }
53
+ /**
54
+ * Delete a record
55
+ *
56
+ * @example
57
+ * await sdk.data.delete('12345', {Id: '12345'});
58
+ */
59
+ delete(objectId, data) {
60
+ return new Promise((resolve, reject) => {
61
+ this._tabDeleteService.deleteRecord('', { data }, objectId)
62
+ ?.subscribe((response) => {
63
+ if (response?.StatusCode == 200) {
64
+ resolve();
65
+ }
66
+ else {
67
+ reject(new Error('Failed to delete record'));
68
+ }
69
+ });
70
+ });
71
+ }
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
73
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataService, providedIn: 'root' });
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataService, decorators: [{
76
+ type: Injectable,
77
+ args: [{
78
+ providedIn: 'root'
79
+ }]
80
+ }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL2RhdGEvZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUt0RyxNQUFNLE9BQU8sV0FBVztJQUNILGlCQUFpQixHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRCxpQkFBaUIsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWhGOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLFFBQWdCLEVBQUUsSUFBUztRQUM5QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDdkQsRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxRQUFRLEVBQUUsVUFBVSxJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQ2xELE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxNQUFNLENBQUMsUUFBZ0IsRUFBRSxJQUFTO1FBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUN2RCxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUMxQixJQUFJLFFBQVEsRUFBRSxVQUFVLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFFBQWdCLEVBQUUsSUFBUztRQUM5QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFDLEVBQUUsUUFBUSxDQUFDO2dCQUNyRCxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUMxQixJQUFJLFFBQVEsRUFBRSxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBbkVRLFdBQVc7NEdBQVgsV0FBVyxjQUZSLE1BQU07OzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRhYkRlbGV0ZVNlcnZpY2UsIFRhYkluc2VydFNlcnZpY2UsIFRhYlVwZGF0ZVNlcnZpY2UgfSBmcm9tICdAdGVjaGV4dGVuc29yL3RhYi1jb3JlLXV0aWxpdHknO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJJbnNlcnRTZXJ2aWNlOiBUYWJJbnNlcnRTZXJ2aWNlID0gaW5qZWN0KFRhYkluc2VydFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYlVwZGF0ZVNlcnZpY2U6IFRhYlVwZGF0ZVNlcnZpY2UgPSBpbmplY3QoVGFiVXBkYXRlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiRGVsZXRlU2VydmljZTogVGFiRGVsZXRlU2VydmljZSA9IGluamVjdChUYWJEZWxldGVTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIEluc2VydCBhIG5ldyByZWNvcmRcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IG5ld1JlY29yZCA9IGF3YWl0IHNkay5kYXRhLmluc2VydCgnMTIzNDU2Jywge1xuICAgICAqICAgbmFtZTogJ0FDTUUgQ29ycCcsXG4gICAgICogICBlbWFpbDogJ2NvbnRhY3RAYWNtZS5jb20nXG4gICAgICogfSk7XG4gICAgICovXG4gICAgaW5zZXJ0KG9iamVjdElkOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFiSW5zZXJ0U2VydmljZS5pbnNlcnRCeU9iamVjdElkKG9iamVjdElkLCB7IGRhdGEgfSlcbiAgICAgICAgICAgICAgICA/LnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2U/LlN0YXR1c0NvZGUgPT0gMjAwICYmIHJlc3BvbnNlPy5SZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuUmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byBpbnNlcnQgcmVjb3JkJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBhbiBleGlzdGluZyByZWNvcmRcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGF3YWl0IHNkay5kYXRhLnVwZGF0ZSgnMTIzNDUnLCB7XG4gICAgICogICBJZDogJzEyMzQ1JyxcbiAgICAgKiAgIG5hbWU6ICdBQ01FIENvcnBvcmF0aW9uJyxcbiAgICAgKiAgIHN0YXR1czogJ2FjdGl2ZSdcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICB1cGRhdGUob2JqZWN0SWQ6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YWJVcGRhdGVTZXJ2aWNlLnVwZGF0ZUJ5T2JqZWN0SWQob2JqZWN0SWQsIHsgZGF0YSB9KVxuICAgICAgICAgICAgICAgID8uc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZT8uU3RhdHVzQ29kZSA9PSAyMDAgJiYgcmVzcG9uc2U/LlJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5SZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHVwZGF0ZSByZWNvcmQnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGEgcmVjb3JkXG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhd2FpdCBzZGsuZGF0YS5kZWxldGUoJzEyMzQ1Jywge0lkOiAnMTIzNDUnfSk7XG4gICAgICovXG4gICAgZGVsZXRlKG9iamVjdElkOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFiRGVsZXRlU2VydmljZS5kZWxldGVSZWNvcmQoJycsIHtkYXRhfSwgb2JqZWN0SWQpXG4gICAgICAgICAgICAgICAgPy5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5TdGF0dXNDb2RlID09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIGRlbGV0ZSByZWNvcmQnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,50 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { DataService } from './data/data.service';
3
+ import { UiService } from './ui/ui.service';
4
+ import { FormService } from './ui/form.service';
5
+ import { AuthService } from './core/auth.service';
6
+ import { UtilsService } from './common/utils.service';
7
+ import { MetadataHelper } from '@techextensor/tab-core-utility';
8
+ import * as i0 from "@angular/core";
9
+ export class TabSdk {
10
+ static data;
11
+ static ui;
12
+ static form;
13
+ static auth;
14
+ static utils;
15
+ static metadataUtils;
16
+ static context;
17
+ /**
18
+ * Initialize the SDK with necessary services
19
+ */
20
+ static init(injector, context) {
21
+ // Expose to window for global access if needed
22
+ window.TabSdk = TabSdk;
23
+ // external services
24
+ this.context = context;
25
+ // Initialize services
26
+ this.data = injector.get(DataService);
27
+ this.ui = injector.get(UiService);
28
+ this.form = injector.get(FormService);
29
+ this.auth = injector.get(AuthService);
30
+ this.utils = injector.get(UtilsService);
31
+ this.metadataUtils = injector.get(MetadataHelper);
32
+ // Freeze the global object to prevent modifications
33
+ Object.freeze(this);
34
+ Object.freeze(this.context);
35
+ Object.freeze(this.data);
36
+ Object.freeze(this.ui);
37
+ Object.freeze(this.form);
38
+ Object.freeze(this.auth);
39
+ Object.freeze(this.utils);
40
+ }
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabSdk, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabSdk, providedIn: 'root' });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabSdk, decorators: [{
45
+ type: Injectable,
46
+ args: [{
47
+ providedIn: 'root'
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXNkay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL3RhYi1zZGsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUtoRSxNQUFNLE9BQU8sTUFBTTtJQUNWLE1BQU0sQ0FBQyxJQUFJLENBQWM7SUFDekIsTUFBTSxDQUFDLEVBQUUsQ0FBWTtJQUNyQixNQUFNLENBQUMsSUFBSSxDQUFjO0lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQWM7SUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBZTtJQUMzQixNQUFNLENBQUMsYUFBYSxDQUFpQjtJQUNyQyxNQUFNLENBQUMsT0FBTyxDQUFNO0lBRTNCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFrQixFQUFFLE9BQVk7UUFDakQsK0NBQStDO1FBQzlDLE1BQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRWhDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEQsb0RBQW9EO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzt3R0FuQ1UsTUFBTTs0R0FBTixNQUFNLGNBRkwsTUFBTTs7NEZBRVAsTUFBTTtrQkFIbEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFVpU2VydmljZSB9IGZyb20gJy4vdWkvdWkuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vdWkvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGFiU2RrIHtcbiAgcHVibGljIHN0YXRpYyBkYXRhOiBEYXRhU2VydmljZTtcbiAgcHVibGljIHN0YXRpYyB1aTogVWlTZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIGZvcm06IEZvcm1TZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIGF1dGg6IEF1dGhTZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIHV0aWxzOiBVdGlsc1NlcnZpY2U7XG4gIHB1YmxpYyBzdGF0aWMgbWV0YWRhdGFVdGlsczogTWV0YWRhdGFIZWxwZXI7XG4gIHB1YmxpYyBzdGF0aWMgY29udGV4dDogYW55O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBTREsgd2l0aCBuZWNlc3Nhcnkgc2VydmljZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW5pdChpbmplY3RvcjogSW5qZWN0b3IsIGNvbnRleHQ6IGFueSk6IHZvaWQge1xuICAgIC8vIEV4cG9zZSB0byB3aW5kb3cgZm9yIGdsb2JhbCBhY2Nlc3MgaWYgbmVlZGVkXG4gICAgKHdpbmRvdyBhcyBhbnkpLlRhYlNkayA9IFRhYlNkaztcblxuICAgIC8vIGV4dGVybmFsIHNlcnZpY2VzXG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcblxuICAgIC8vIEluaXRpYWxpemUgc2VydmljZXNcbiAgICB0aGlzLmRhdGEgPSBpbmplY3Rvci5nZXQoRGF0YVNlcnZpY2UpO1xuICAgIHRoaXMudWkgPSBpbmplY3Rvci5nZXQoVWlTZXJ2aWNlKTtcbiAgICB0aGlzLmZvcm0gPSBpbmplY3Rvci5nZXQoRm9ybVNlcnZpY2UpO1xuICAgIHRoaXMuYXV0aCA9IGluamVjdG9yLmdldChBdXRoU2VydmljZSk7XG4gICAgdGhpcy51dGlscyA9IGluamVjdG9yLmdldChVdGlsc1NlcnZpY2UpO1xuICAgIHRoaXMubWV0YWRhdGFVdGlscyA9IGluamVjdG9yLmdldChNZXRhZGF0YUhlbHBlcik7XG5cbiAgICAvLyBGcmVlemUgdGhlIGdsb2JhbCBvYmplY3QgdG8gcHJldmVudCBtb2RpZmljYXRpb25zXG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgICBPYmplY3QuZnJlZXplKHRoaXMuY29udGV4dCk7XG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzLmRhdGEpO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy51aSk7XG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzLmZvcm0pO1xuICAgIE9iamVjdC5mcmVlemUodGhpcy5hdXRoKTtcbiAgICBPYmplY3QuZnJlZXplKHRoaXMudXRpbHMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,97 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { TabSdk } from "../tab-sdk.service";
3
+ import * as i0 from "@angular/core";
4
+ export class FormService {
5
+ _helperFunctionService = TabSdk.context?.HelperFunctionService;
6
+ /**
7
+ * Processes form components with individual actions in a single pass
8
+ *
9
+ * @example
10
+ * // Process multiple components with different actions in one pass
11
+ * sdk.form.processComponents(
12
+ * screenParameters.rendererInstance.form.components,
13
+ * [
14
+ * {
15
+ * keys: 'documentDetails', // Single key
16
+ * action: (component) => component.hidden = true,
17
+ * type: 'columns' // Optional type filter
18
+ * },
19
+ * {
20
+ * keys: 'documentPreview,documentComments', // Multiple keys as comma-separated string
21
+ * action: (component) => component.hidden = false
22
+ * }
23
+ * ]
24
+ * );
25
+ */
26
+ processComponents(components, processors) {
27
+ if (!components || !Array.isArray(components) || !processors?.length) {
28
+ return;
29
+ }
30
+ this._helperFunctionService?.eachComponent(components, (component) => {
31
+ processors.forEach(processor => {
32
+ // Split the keys string into an array
33
+ const keyList = processor.keys.split(',').map(k => k.trim());
34
+ // Check if component key is in the list of keys to process
35
+ if (!keyList.includes(component.key))
36
+ return;
37
+ // Check type match if specified
38
+ if (processor.type && component.type !== processor.type)
39
+ return;
40
+ // All criteria matched, execute the action
41
+ processor.action(component);
42
+ });
43
+ });
44
+ }
45
+ /**
46
+ * Updates visibility of multiple form components at once
47
+ *
48
+ * @example
49
+ * sdk.form.setComponentsVisibility(
50
+ * screenParameters.rendererInstance.form.components,
51
+ * {
52
+ * 'documentDetails': false,
53
+ * 'documentComments': true
54
+ * }
55
+ * );
56
+ */
57
+ setComponentsVisibility(components, visibilityMap) {
58
+ const keys = Object.keys(visibilityMap);
59
+ this.processComponents(components, keys.map(key => ({
60
+ keys: key,
61
+ action: (component) => {
62
+ component.hidden = visibilityMap[key];
63
+ }
64
+ })));
65
+ }
66
+ /**
67
+ * Finds components by key and returns them in a structured object
68
+ *
69
+ * @example
70
+ * const components = sdk.form.findComponentsByKeys(
71
+ * form.components,
72
+ * ['documentDetails', 'documentPreview', 'documentComments']
73
+ * );
74
+ */
75
+ findComponentsByKeys(components, keys, options) {
76
+ const result = {};
77
+ if (!components || !Array.isArray(components) || !keys?.length) {
78
+ return result;
79
+ }
80
+ // Use the existing eachComponent helper
81
+ this._helperFunctionService.eachComponent(components, (component) => {
82
+ if (!options?.type || component.type === options.type) {
83
+ result[component.key] = component;
84
+ }
85
+ }, keys);
86
+ return result;
87
+ }
88
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
89
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormService, providedIn: 'root' });
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormService, decorators: [{
92
+ type: Injectable,
93
+ args: [{
94
+ providedIn: 'root'
95
+ }]
96
+ }] });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL3VpL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFLNUMsTUFBTSxPQUFPLFdBQVc7SUFDSCxzQkFBc0IsR0FBUSxNQUFNLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDO0lBRXJGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUJFO0lBQ0YsaUJBQWlCLENBQ2IsVUFBaUIsRUFDakIsVUFJRTtRQUVGLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25FLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUN0RSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMzQixzQ0FBc0M7Z0JBQ3RDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUU3RCwyREFBMkQ7Z0JBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7b0JBQUUsT0FBTztnQkFFN0MsZ0NBQWdDO2dCQUNoQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSTtvQkFBRSxPQUFPO2dCQUVoRSwyQ0FBMkM7Z0JBQzNDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILHVCQUF1QixDQUNuQixVQUFpQixFQUNqQixhQUFzQztRQUV0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2IsSUFBSSxFQUFFLEdBQUc7WUFDVCxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDbEIsU0FBUyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUNOLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxvQkFBb0IsQ0FDaEIsVUFBaUIsRUFDakIsSUFBYyxFQUNkLE9BRUM7UUFFRCxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDdEMsQ0FBQztRQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVULE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7d0dBOUdRLFdBQVc7NEdBQVgsV0FBVyxjQUZSLE1BQU07OzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUYWJTZGsgfSBmcm9tIFwiLi4vdGFiLXNkay5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hlbHBlckZ1bmN0aW9uU2VydmljZTogYW55ID0gVGFiU2RrLmNvbnRleHQ/LkhlbHBlckZ1bmN0aW9uU2VydmljZTtcblxuICAgIC8qKlxuICAgICogUHJvY2Vzc2VzIGZvcm0gY29tcG9uZW50cyB3aXRoIGluZGl2aWR1YWwgYWN0aW9ucyBpbiBhIHNpbmdsZSBwYXNzXG4gICAgKiBcbiAgICAqIEBleGFtcGxlXG4gICAgKiAvLyBQcm9jZXNzIG11bHRpcGxlIGNvbXBvbmVudHMgd2l0aCBkaWZmZXJlbnQgYWN0aW9ucyBpbiBvbmUgcGFzc1xuICAgICogc2RrLmZvcm0ucHJvY2Vzc0NvbXBvbmVudHMoXG4gICAgKiAgIHNjcmVlblBhcmFtZXRlcnMucmVuZGVyZXJJbnN0YW5jZS5mb3JtLmNvbXBvbmVudHMsXG4gICAgKiAgIFtcbiAgICAqICAgICB7IFxuICAgICogICAgICAga2V5czogJ2RvY3VtZW50RGV0YWlscycsIC8vIFNpbmdsZSBrZXlcbiAgICAqICAgICAgIGFjdGlvbjogKGNvbXBvbmVudCkgPT4gY29tcG9uZW50LmhpZGRlbiA9IHRydWUsXG4gICAgKiAgICAgICB0eXBlOiAnY29sdW1ucycgLy8gT3B0aW9uYWwgdHlwZSBmaWx0ZXJcbiAgICAqICAgICB9LFxuICAgICogICAgIHsgXG4gICAgKiAgICAgICBrZXlzOiAnZG9jdW1lbnRQcmV2aWV3LGRvY3VtZW50Q29tbWVudHMnLCAvLyBNdWx0aXBsZSBrZXlzIGFzIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICAqICAgICAgIGFjdGlvbjogKGNvbXBvbmVudCkgPT4gY29tcG9uZW50LmhpZGRlbiA9IGZhbHNlIFxuICAgICogICAgIH1cbiAgICAqICAgXVxuICAgICogKTtcbiAgICAqL1xuICAgIHByb2Nlc3NDb21wb25lbnRzKFxuICAgICAgICBjb21wb25lbnRzOiBhbnlbXSxcbiAgICAgICAgcHJvY2Vzc29yczogQXJyYXk8e1xuICAgICAgICAgICAga2V5czogc3RyaW5nLCAvLyBSZXF1aXJlZDogQ29tcG9uZW50IGtleShzKSB0byBtYXRjaCAoY29tbWEtc2VwYXJhdGVkIGZvciBtdWx0aXBsZSlcbiAgICAgICAgICAgIHR5cGU/OiBzdHJpbmcsIC8vIE9wdGlvbmFsOiBDb21wb25lbnQgdHlwZSB0byBtYXRjaFxuICAgICAgICAgICAgYWN0aW9uOiAoY29tcG9uZW50OiBhbnkpID0+IHZvaWQgLy8gQWN0aW9uIHRvIHBlcmZvcm0gb24gbWF0Y2hlZCBjb21wb25lbnRcbiAgICAgICAgfT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjb21wb25lbnRzIHx8ICFBcnJheS5pc0FycmF5KGNvbXBvbmVudHMpIHx8ICFwcm9jZXNzb3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2hlbHBlckZ1bmN0aW9uU2VydmljZT8uZWFjaENvbXBvbmVudChjb21wb25lbnRzLCAoY29tcG9uZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3NvcnMuZm9yRWFjaChwcm9jZXNzb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBrZXlzIHN0cmluZyBpbnRvIGFuIGFycmF5XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5TGlzdCA9IHByb2Nlc3Nvci5rZXlzLnNwbGl0KCcsJykubWFwKGsgPT4gay50cmltKCkpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgY29tcG9uZW50IGtleSBpcyBpbiB0aGUgbGlzdCBvZiBrZXlzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICBpZiAoIWtleUxpc3QuaW5jbHVkZXMoY29tcG9uZW50LmtleSkpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIC8vIENoZWNrIHR5cGUgbWF0Y2ggaWYgc3BlY2lmaWVkXG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3Nvci50eXBlICYmIGNvbXBvbmVudC50eXBlICE9PSBwcm9jZXNzb3IudHlwZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgLy8gQWxsIGNyaXRlcmlhIG1hdGNoZWQsIGV4ZWN1dGUgdGhlIGFjdGlvblxuICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5hY3Rpb24oY29tcG9uZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHZpc2liaWxpdHkgb2YgbXVsdGlwbGUgZm9ybSBjb21wb25lbnRzIGF0IG9uY2VcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHNkay5mb3JtLnNldENvbXBvbmVudHNWaXNpYmlsaXR5KFxuICAgICAqICAgc2NyZWVuUGFyYW1ldGVycy5yZW5kZXJlckluc3RhbmNlLmZvcm0uY29tcG9uZW50cywgXG4gICAgICogICB7XG4gICAgICogICAgICdkb2N1bWVudERldGFpbHMnOiBmYWxzZSxcbiAgICAgKiAgICAgJ2RvY3VtZW50Q29tbWVudHMnOiB0cnVlXG4gICAgICogICB9XG4gICAgICogKTtcbiAgICAgKi9cbiAgICBzZXRDb21wb25lbnRzVmlzaWJpbGl0eShcbiAgICAgICAgY29tcG9uZW50czogYW55W10sXG4gICAgICAgIHZpc2liaWxpdHlNYXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2aXNpYmlsaXR5TWFwKTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NDb21wb25lbnRzKGNvbXBvbmVudHMsXG4gICAgICAgICAgICBrZXlzLm1hcChrZXkgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXlzOiBrZXksXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5oaWRkZW4gPSB2aXNpYmlsaXR5TWFwW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgY29tcG9uZW50cyBieSBrZXkgYW5kIHJldHVybnMgdGhlbSBpbiBhIHN0cnVjdHVyZWQgb2JqZWN0XG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBjb21wb25lbnRzID0gc2RrLmZvcm0uZmluZENvbXBvbmVudHNCeUtleXMoXG4gICAgICogICBmb3JtLmNvbXBvbmVudHMsXG4gICAgICogICBbJ2RvY3VtZW50RGV0YWlscycsICdkb2N1bWVudFByZXZpZXcnLCAnZG9jdW1lbnRDb21tZW50cyddXG4gICAgICogKTtcbiAgICAgKi9cbiAgICBmaW5kQ29tcG9uZW50c0J5S2V5cyhcbiAgICAgICAgY29tcG9uZW50czogYW55W10sXG4gICAgICAgIGtleXM6IHN0cmluZ1tdLFxuICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAgdHlwZT86IHN0cmluZ1xuICAgICAgICB9XG4gICAgKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgICAgIGlmICghY29tcG9uZW50cyB8fCAhQXJyYXkuaXNBcnJheShjb21wb25lbnRzKSB8fCAha2V5cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIHRoZSBleGlzdGluZyBlYWNoQ29tcG9uZW50IGhlbHBlciBcbiAgICAgICAgdGhpcy5faGVscGVyRnVuY3Rpb25TZXJ2aWNlLmVhY2hDb21wb25lbnQoY29tcG9uZW50cywgKGNvbXBvbmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnM/LnR5cGUgfHwgY29tcG9uZW50LnR5cGUgPT09IG9wdGlvbnMudHlwZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtjb21wb25lbnQua2V5XSA9IGNvbXBvbmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwga2V5cyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59Il19
@@ -0,0 +1,13 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class UiService {
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UiService, providedIn: 'root' });
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UiService, decorators: [{
8
+ type: Injectable,
9
+ args: [{
10
+ providedIn: 'root'
11
+ }]
12
+ }] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL2xpYi91aS91aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxTQUFTO3dHQUFULFNBQVM7NEdBQVQsU0FBUyxjQUZOLE1BQU07OzRGQUVULFNBQVM7a0JBSHJCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVWlTZXJ2aWNlIHt9Il19
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of tab-sdk
3
+ */
4
+ export * from './lib/tab-sdk.service';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0YWItc2RrXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLXNkay5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGV4dGVuc29yLXRhYi1zZGsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy90YWItc2RrL3NyYy90ZWNoZXh0ZW5zb3ItdGFiLXNkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19