cmat 0.0.78 → 0.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cmat-components-adapter.mjs +9 -46
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs +104 -205
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +4 -8
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +21 -21
- package/fesm2022/cmat-components-carousel.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +18 -24
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +21 -21
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-code-editor.mjs +4 -22
- package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +181 -245
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +12 -184
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-date-time-display.mjs +3 -15
- package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +10 -100
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-empty-state.mjs +4 -25
- package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
- package/fesm2022/cmat-components-file-preview.mjs +3 -21
- package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
- package/fesm2022/cmat-components-filter-toolbar.mjs +7 -50
- package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-form-actions.mjs +3 -9
- package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +4 -4
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +6 -32
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +12 -24
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
- package/fesm2022/cmat-components-inline-loading.mjs +3 -12
- package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +11 -16
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +24 -18
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs +8 -17
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +13 -34
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +80 -436
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +266 -816
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +7 -10
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
- package/fesm2022/cmat-components-org-chart.mjs +11 -11
- package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
- package/fesm2022/cmat-components-page-header.mjs +8 -19
- package/fesm2022/cmat-components-page-header.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +113 -108
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +13 -16
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +15 -151
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +16 -26
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-qrcode.mjs +5 -11
- package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +14 -14
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-rich-text-editor.mjs +4 -25
- package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +51 -79
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +204 -162
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +142 -97
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-skeleton.mjs +4 -22
- package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +14 -19
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
- package/fesm2022/cmat-components-status-tag.mjs +3 -18
- package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
- package/fesm2022/cmat-components-table-toolbar.mjs +3 -15
- package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +18 -21
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +20 -20
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +159 -123
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +17 -19
- package/fesm2022/cmat-components-treetable.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +35 -57
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-components-x6-angular-shape.mjs +0 -4
- package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -27
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-arrow-cursor.mjs +7 -9
- package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-data-exporter.mjs +24 -33
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs +14 -17
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +6 -23
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +4 -11
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +6 -43
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -5
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-secure.mjs +8 -12
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs +3 -3
- package/fesm2022/cmat-services-config.mjs +50 -26
- package/fesm2022/cmat-services-config.mjs.map +1 -1
- package/fesm2022/cmat-services-confirmation.mjs +9 -11
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +56 -101
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +4 -32
- package/fesm2022/cmat-services-export-as.mjs.map +1 -1
- package/fesm2022/cmat-services-loading.mjs +49 -40
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +19 -25
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
- package/fesm2022/cmat-services-platform.mjs +3 -10
- package/fesm2022/cmat-services-platform.mjs.map +1 -1
- package/fesm2022/cmat-services-splash-screen.mjs +8 -13
- package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +8 -12
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs +3 -3
- package/fesm2022/cmat-services-utils.mjs +5 -27
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat-validators.mjs +0 -8
- package/fesm2022/cmat-validators.mjs.map +1 -1
- package/fesm2022/cmat.mjs +3477 -3795
- package/fesm2022/cmat.mjs.map +1 -1
- package/package.json +1 -1
- package/tailwind/plugins/helpers.js +1 -10
- package/tailwind/plugins/scrollbar/index.js +0 -1
- package/tailwind/plugins/scrollbar/typedefs.js +1 -7
- package/tailwind/plugins/scrollbar/utilities.js +9 -58
- package/tailwind/plugins/scrollbar/variants.js +2 -17
- package/tailwind/plugins/theming.js +1 -57
- package/tailwind/utils/generate-contrasts.js +1 -12
- package/tailwind/utils/generate-palette.js +1 -32
- package/types/cmat-components-adapter.d.ts +0 -25
- package/types/cmat-components-breadcrumb.d.ts +25 -175
- package/types/cmat-components-carousel.d.ts +2 -20
- package/types/cmat-components-cascade.d.ts +4 -4
- package/types/cmat-components-chip-input.d.ts +4 -3
- package/types/cmat-components-code-editor.d.ts +0 -18
- package/types/cmat-components-custom-formly.d.ts +30 -37
- package/types/cmat-components-date-range.d.ts +1 -72
- package/types/cmat-components-date-time-display.d.ts +0 -15
- package/types/cmat-components-drawer.d.ts +2 -44
- package/types/cmat-components-empty-state.d.ts +0 -21
- package/types/cmat-components-file-preview.d.ts +0 -18
- package/types/cmat-components-filter-toolbar.d.ts +3 -43
- package/types/cmat-components-form-actions.d.ts +0 -6
- package/types/cmat-components-image-viewer.d.ts +5 -18
- package/types/cmat-components-inline-loading.d.ts +0 -9
- package/types/cmat-components-json-editor.d.ts +0 -1
- package/types/cmat-components-knob-input.d.ts +3 -3
- package/types/cmat-components-masonry.d.ts +1 -2
- package/types/cmat-components-material-color-picker.d.ts +1 -2
- package/types/cmat-components-material-datetimepicker.d.ts +6 -272
- package/types/cmat-components-navigation.d.ts +34 -171
- package/types/cmat-components-opt-input.d.ts +1 -1
- package/types/cmat-components-page-header.d.ts +2 -16
- package/types/cmat-components-pagination.d.ts +26 -27
- package/types/cmat-components-password-strength.d.ts +1 -2
- package/types/cmat-components-popover.d.ts +1 -110
- package/types/cmat-components-progress-bar.d.ts +9 -11
- package/types/cmat-components-rating.d.ts +6 -7
- package/types/cmat-components-rich-text-editor.d.ts +0 -21
- package/types/cmat-components-select-search.d.ts +4 -20
- package/types/cmat-components-select-table.d.ts +24 -12
- package/types/cmat-components-select-tree.d.ts +29 -29
- package/types/cmat-components-skeleton.d.ts +0 -18
- package/types/cmat-components-speed-dial.d.ts +1 -2
- package/types/cmat-components-status-tag.d.ts +0 -15
- package/types/cmat-components-table-toolbar.d.ts +0 -12
- package/types/cmat-components-timeline.d.ts +3 -4
- package/types/cmat-components-toast.d.ts +2 -2
- package/types/cmat-components-transfer-picker.d.ts +42 -36
- package/types/cmat-components-treetable.d.ts +3 -4
- package/types/cmat-components-upload.d.ts +12 -17
- package/types/cmat-components-x6-angular-shape.d.ts +0 -1
- package/types/cmat-directives-arrow-cursor.d.ts +1 -1
- package/types/cmat-directives-debounce.d.ts +3 -4
- package/types/cmat-pipes-secure.d.ts +3 -4
- package/types/cmat-services-config.d.ts +35 -13
- package/types/cmat-services-data.d.ts +13 -12
- package/types/cmat-services-export-as.d.ts +0 -22
- package/types/cmat-services-loading.d.ts +15 -10
- package/types/cmat-services-media-watcher.d.ts +10 -13
- package/types/cmat-services-splash-screen.d.ts +2 -4
- package/types/cmat-services-title.d.ts +3 -5
- package/types/cmat.d.ts +733 -1391
|
@@ -18,8 +18,8 @@ class CmatUtilsService {
|
|
|
18
18
|
static { this.noNetworkMessageDetail = '无法连接服务器'; }
|
|
19
19
|
static { this.accessDeniedMessageCaption = '拒绝访问!'; }
|
|
20
20
|
static { this.accessDeniedMessageDetail = ''; }
|
|
21
|
-
static { this.key = UTF8.parse('14789632236987411478963223698741'); } //32位
|
|
22
|
-
static { this.iv = UTF8.parse('1478963223698741'); } //16位
|
|
21
|
+
static { this.key = UTF8.parse('14789632236987411478963223698741'); } // 32位
|
|
22
|
+
static { this.iv = UTF8.parse('1478963223698741'); } // 16位
|
|
23
23
|
get exactMatchOptions() {
|
|
24
24
|
return {
|
|
25
25
|
paths: 'exact',
|
|
@@ -114,18 +114,14 @@ class CmatUtilsService {
|
|
|
114
114
|
}
|
|
115
115
|
static handleError(error) {
|
|
116
116
|
if (error.error instanceof ErrorEvent) {
|
|
117
|
-
// A client-side or network error occurred. Handle it accordingly.
|
|
118
117
|
console.error('Client side network error occurred:', error.message);
|
|
119
118
|
}
|
|
120
119
|
else {
|
|
121
|
-
// The backend returned an unsuccessful response code.
|
|
122
|
-
// The response body may contain clues as to what went wrong,
|
|
123
120
|
console.error('Backend - ' +
|
|
124
121
|
`status: ${error.status}, ` +
|
|
125
122
|
`statusText: ${error.statusText}, ` +
|
|
126
123
|
`message: ${error.error}`);
|
|
127
124
|
}
|
|
128
|
-
// return an observable with a user-facing error message
|
|
129
125
|
return throwError(() => error ?? 'server error');
|
|
130
126
|
}
|
|
131
127
|
static getHttpResponseMessage(data) {
|
|
@@ -370,24 +366,18 @@ class CmatUtilsService {
|
|
|
370
366
|
if (date == null) {
|
|
371
367
|
return false;
|
|
372
368
|
}
|
|
373
|
-
// Token expired?
|
|
374
369
|
return !(date.valueOf() > (new Date().valueOf() + (offsetSeconds * 1000)));
|
|
375
370
|
}
|
|
376
371
|
static readAsDataURL(file) {
|
|
377
|
-
// Return a new promise
|
|
378
372
|
return new Promise((resolve, reject) => {
|
|
379
|
-
// Create a new reader
|
|
380
373
|
const reader = new FileReader();
|
|
381
|
-
// Resolve the promise on success
|
|
382
374
|
reader.onload = () => {
|
|
383
375
|
resolve(reader.result);
|
|
384
376
|
};
|
|
385
|
-
// Reject the promise on error
|
|
386
377
|
reader.onerror = (e) => {
|
|
387
378
|
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
|
|
388
379
|
reject(e);
|
|
389
380
|
};
|
|
390
|
-
// Read the file as the
|
|
391
381
|
reader.readAsDataURL(file);
|
|
392
382
|
});
|
|
393
383
|
}
|
|
@@ -446,28 +436,20 @@ class CmatUtilsService {
|
|
|
446
436
|
}
|
|
447
437
|
return fileType;
|
|
448
438
|
}
|
|
449
|
-
// 添加一个私有方法用于更准确地判断是否为日期字符串
|
|
450
439
|
static isDateString(value) {
|
|
451
|
-
// 首先检查是否为字符串或数字
|
|
452
440
|
if (!value || (typeof value !== 'string' && typeof value !== 'number')) {
|
|
453
441
|
return false;
|
|
454
442
|
}
|
|
455
|
-
// 转换为字符串进行检查
|
|
456
443
|
const stringValue = String(value);
|
|
457
|
-
// 排除纯数字字符串(如 "1", "123" 等)
|
|
458
444
|
if (/^\d+$/.test(stringValue)) {
|
|
459
445
|
return false;
|
|
460
446
|
}
|
|
461
|
-
// 尝试解析日期
|
|
462
447
|
const parsedDate = Date.parse(stringValue);
|
|
463
|
-
// 检查是否能成功解析且不是纯数字
|
|
464
448
|
if (isNaN(parsedDate)) {
|
|
465
449
|
return false;
|
|
466
450
|
}
|
|
467
|
-
// 使用 dayjs 验证是否为有效日期
|
|
468
451
|
return dayjs(stringValue).isValid();
|
|
469
452
|
}
|
|
470
|
-
//用于导出时结构转换,columns结构为{ code: string;label: string;}
|
|
471
453
|
static transformObjectsForExport(jsonObjects, columns) {
|
|
472
454
|
return jsonObjects.map((jsonObject) => {
|
|
473
455
|
const result = {};
|
|
@@ -475,18 +457,14 @@ class CmatUtilsService {
|
|
|
475
457
|
const parts = info.code.split('.');
|
|
476
458
|
const lastPart = parts.pop();
|
|
477
459
|
let currentValue = jsonObject;
|
|
478
|
-
// 遍历对象路径,直到找到最终属性所在的对象
|
|
479
460
|
parts.forEach((part) => {
|
|
480
461
|
if (Object.prototype.hasOwnProperty.call(currentValue, part)) {
|
|
481
462
|
currentValue = currentValue[part];
|
|
482
463
|
}
|
|
483
464
|
else {
|
|
484
|
-
// 如果路径中的任何部分不存在,则设置为 undefined
|
|
485
465
|
currentValue = undefined;
|
|
486
466
|
}
|
|
487
467
|
});
|
|
488
|
-
// 如果最终属性不存在,则设置为默认值(这里为空字符串)
|
|
489
|
-
// 或者,您可以根据需要设置其他默认值或进行其他逻辑处理
|
|
490
468
|
result[info.code] = currentValue ? (Object.prototype.hasOwnProperty.call(currentValue, lastPart) ? currentValue[lastPart] : '') : '';
|
|
491
469
|
});
|
|
492
470
|
return result;
|
|
@@ -503,10 +481,10 @@ class CmatUtilsService {
|
|
|
503
481
|
}
|
|
504
482
|
return id;
|
|
505
483
|
}
|
|
506
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
507
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
484
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
485
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatUtilsService, providedIn: 'root' }); }
|
|
508
486
|
}
|
|
509
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
487
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatUtilsService, decorators: [{
|
|
510
488
|
type: Injectable,
|
|
511
489
|
args: [{
|
|
512
490
|
providedIn: 'root'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-services-utils.mjs","sources":["../../../projects/cmat/services/utils/utils.service.ts","../../../projects/cmat/services/utils/cmat-services-utils.ts"],"sourcesContent":["import { HttpErrorResponse, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { IsActiveMatchOptions } from '@angular/router';\r\nimport { CMAT_VERSION } from 'cmat/version';\r\nimport AES from 'crypto-js/aes';\r\nimport CryptoJSCore from 'crypto-js/core';\r\nimport Base64 from 'crypto-js/enc-base64';\r\nimport Hex from 'crypto-js/enc-hex';\r\nimport UTF8 from 'crypto-js/enc-utf8';\r\nimport Pkcs7 from 'crypto-js/pad-pkcs7';\r\nimport dayjs from 'dayjs';\r\nimport { isUndefined } from 'lodash-es';\r\nimport { throwError, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatUtilsService {\r\n public static readonly captionAndMessageSeparator = ':';\r\n public static readonly noNetworkMessageCaption = '无网络';\r\n public static readonly noNetworkMessageDetail = '无法连接服务器';\r\n public static readonly accessDeniedMessageCaption = '拒绝访问!';\r\n public static readonly accessDeniedMessageDetail = '';\r\n private static readonly key = UTF8.parse('14789632236987411478963223698741');//32位\r\n private static readonly iv = UTF8.parse('1478963223698741');//16位\r\n\r\n get exactMatchOptions(): IsActiveMatchOptions {\r\n return {\r\n paths: 'exact',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored',\r\n queryParams: 'exact'\r\n };\r\n }\r\n\r\n get subsetMatchOptions(): IsActiveMatchOptions {\r\n return {\r\n paths: 'subset',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored',\r\n queryParams: 'subset'\r\n };\r\n }\r\n\r\n public static getRequestHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestIdempotentHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestBypassHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('bypass', 'true')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestIdempotentBypassHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('bypass', 'true')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestCryptoHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getRequestCryptoBypassHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('bypass', 'true')\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getRequestCryptoIdempotentHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getRequestCryptoIdempotentBypassHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('bypass', 'true')\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getEncryptData(data: string): string {\r\n const src = UTF8.parse(data);\r\n\r\n return AES.encrypt(src, this.key, {\r\n iv: this.iv,\r\n mode: CryptoJSCore.mode.CBC,\r\n padding: Pkcs7\r\n }).ciphertext.toString();\r\n }\r\n\r\n public static getDecryptData(data: string): string {\r\n const encryptedHexStr = Hex.parse(data);\r\n return AES.decrypt(Base64.stringify(encryptedHexStr), this.key, {\r\n iv: this.iv,\r\n mode: CryptoJSCore.mode.CBC,\r\n padding: Pkcs7\r\n }).toString(UTF8).toString();\r\n }\r\n\r\n public static handleError(error: any): Observable<never> {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('Client side network error occurred:', error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n console.error('Backend - ' +\r\n `status: ${error.status}, ` +\r\n `statusText: ${error.statusText}, ` +\r\n `message: ${error.error}`);\r\n }\r\n\r\n // return an observable with a user-facing error message\r\n return throwError(() => error ?? 'server error');\r\n }\r\n\r\n public static getHttpResponseMessage(data: any): string[] {\r\n\r\n const responses: string[] = [];\r\n\r\n if (data instanceof HttpResponseBase) {\r\n if (this.checkNoNetwork(data)) {\r\n responses.push(`${this.noNetworkMessageCaption}${this.captionAndMessageSeparator} ${this.noNetworkMessageDetail}`);\r\n } else {\r\n const responseObject = this.getResponseBody(data);\r\n\r\n if (responseObject && (typeof responseObject === 'object' || responseObject instanceof Object)) {\r\n\r\n for (const key in responseObject) {\r\n if (Object.prototype.hasOwnProperty.call(responseObject, key)) {\r\n if (key) {\r\n responses.push(`${key}${this.captionAndMessageSeparator} ${responseObject[key]}`);\r\n } else if (responseObject[key]) {\r\n responses.push(responseObject[key].toString());\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!responses.length && this.getResponseBody(data)) {\r\n responses.push(`${this.getResponseBody(data).toString()}`);\r\n }\r\n }\r\n\r\n if (!responses.length) {\r\n responses.push(data.toString());\r\n }\r\n\r\n if (this.checkAccessDenied(data)) {\r\n responses.splice(0, 0, `${this.accessDeniedMessageCaption}${this.captionAndMessageSeparator} ${this.accessDeniedMessageDetail}`);\r\n }\r\n\r\n return responses;\r\n }\r\n\r\n\r\n public static findHttpResponseMessage(messageToFind: string, data: any, seachInCaptionOnly = true, includeCaptionInResult = false): string | null {\r\n const searchString = messageToFind.toLowerCase();\r\n const httpMessages = this.getHttpResponseMessage(data);\r\n\r\n for (const message of httpMessages) {\r\n const fullMessage = CmatUtilsService.splitInTwo(message, this.captionAndMessageSeparator);\r\n\r\n if (fullMessage.firstPart?.toLowerCase().includes(searchString)) {\r\n return includeCaptionInResult ? message : fullMessage.secondPart ?? fullMessage.firstPart;\r\n }\r\n }\r\n\r\n if (!seachInCaptionOnly) {\r\n for (const message of httpMessages) {\r\n\r\n if (message.toLowerCase().includes(searchString)) {\r\n if (includeCaptionInResult) {\r\n return message;\r\n } else {\r\n const fullMessage = CmatUtilsService.splitInTwo(message, this.captionAndMessageSeparator);\r\n return fullMessage.secondPart ?? fullMessage.firstPart;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public static getResponseBody(response: HttpResponseBase): any {\r\n if (response instanceof HttpResponse) {\r\n return response.body;\r\n }\r\n\r\n if (response instanceof HttpErrorResponse) {\r\n return response.error ?? response.message;\r\n }\r\n return response;\r\n }\r\n\r\n\r\n public static checkNoNetwork(response: HttpResponseBase): boolean {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status === 0;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkAccessDenied(response: HttpResponseBase): boolean {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status === 403;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkNotFound(response: HttpResponseBase): boolean {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status === 404;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkIsLocalHost(url: string, base?: string): boolean {\r\n if (url) {\r\n const location = new URL(url, base);\r\n return location.hostname === 'localhost' || location.hostname === '127.0.0.1';\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static getQueryParamsFromString(paramString: string): Record<string, string | null> | null {\r\n if (!paramString) {\r\n return null;\r\n }\r\n\r\n const params: Record<string, string | null> = {};\r\n\r\n for (const param of paramString.split('&')) {\r\n const keyValue = CmatUtilsService.splitInTwo(param, '=');\r\n params[keyValue.firstPart] = keyValue.secondPart;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n public static splitInTwo(text: string, separator?: string): { firstPart: string; secondPart: string | null } {\r\n const separatorIndex = separator ? text.indexOf(separator) : -1;\r\n\r\n if (separatorIndex === -1) {\r\n return { firstPart: text, secondPart: null };\r\n }\r\n\r\n const part1 = text.substring(0, separatorIndex).trim();\r\n const part2 = text.substring(separatorIndex + 1).trim();\r\n\r\n return { firstPart: part1, secondPart: part2 };\r\n }\r\n\r\n public static safeStringify(object: any): string {\r\n let result: string;\r\n\r\n try {\r\n result = JSON.stringify(object);\r\n return result;\r\n } catch { /* empty */ }\r\n\r\n const simpleObject: any = {};\r\n\r\n for (const prop in object) {\r\n if (!Object.prototype.hasOwnProperty.call(object, prop)) {\r\n continue;\r\n }\r\n if (typeof (object[prop]) == 'object') {\r\n continue;\r\n }\r\n if (typeof (object[prop]) == 'function') {\r\n continue;\r\n }\r\n simpleObject[prop] = object[prop];\r\n }\r\n\r\n result = '[***Sanitized Object***]: ' + JSON.stringify(simpleObject);\r\n\r\n return result;\r\n }\r\n\r\n public static jsonTryParse(value: string): string | void {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n if (isUndefined(value)) {\r\n return void 0;\r\n }\r\n\r\n return value;\r\n }\r\n }\r\n\r\n public static capitalizeFirstLetter(text: string): string {\r\n if (text) {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n } else {\r\n return text;\r\n }\r\n }\r\n\r\n\r\n public static toTitleCase(text: string): string {\r\n return text.replace(/\\w\\S*/g, subString => subString.charAt(0).toUpperCase() + subString.substring(1).toLowerCase());\r\n }\r\n\r\n public static toLowerCase(items: any): string | string[] | void {\r\n if (items instanceof Array) {\r\n const loweredRoles: string[] = [];\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n loweredRoles[i] = items[i].toLowerCase();\r\n }\r\n\r\n return loweredRoles;\r\n } else if (typeof items === 'string' || items instanceof String) {\r\n return items.toLowerCase();\r\n }\r\n\r\n return void 0;\r\n }\r\n\r\n public static uniqueId(): string {\r\n return this.randomNumber(1000000, 9000000).toString();\r\n }\r\n\r\n public static randomNumber(min: number, max: number): number {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n }\r\n\r\n public static baseUrl(): string {\r\n let base: string;\r\n\r\n if (window.location.origin) {\r\n base = window.location.origin;\r\n } else {\r\n base = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\r\n }\r\n\r\n return base.replace(/\\/$/, '');\r\n }\r\n\r\n public static newGuid(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n\r\n const r = (Math.random() * 16) | 0;\r\n\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n public static testIsAbsoluteUrl(url: string): boolean {\r\n const r = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n return r.test(url);\r\n }\r\n\r\n public static convertToAbsoluteUrl(url: string): string {\r\n return CmatUtilsService.testIsAbsoluteUrl(url) ? url : '//' + url;\r\n }\r\n\r\n public static urlBase64Decode(str: string): string {\r\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\r\n switch (output.length % 4) {\r\n case 0: {\r\n break;\r\n }\r\n case 2: {\r\n output += '==';\r\n break;\r\n }\r\n case 3: {\r\n output += '=';\r\n break;\r\n }\r\n }\r\n return this._base64DecodeUnicode(output);\r\n }\r\n\r\n public static decodeToken(token: string): any {\r\n const parts = token.split('.');\r\n\r\n if (parts.length !== 3) {\r\n throw new Error('JWT must have 3 parts');\r\n }\r\n\r\n const decoded = this.urlBase64Decode(parts[1]);\r\n if (!decoded) {\r\n throw new Error('Cannot decode the token');\r\n }\r\n\r\n return JSON.parse(decoded);\r\n }\r\n\r\n public static getTokenExpirationDate(token: string): Date | null {\r\n const decoded = this.decodeToken(token);\r\n\r\n if (!Object.prototype.hasOwnProperty.call(decoded, 'exp')) {\r\n return null;\r\n }\r\n\r\n const date = new Date(0); // The 0 here is the key, which sets the date to the epoch\r\n date.setUTCSeconds(decoded.exp);\r\n\r\n return date;\r\n }\r\n\r\n public static isTokenExpired(token: string, offsetSeconds?: number): boolean {\r\n const date = this.getTokenExpirationDate(token);\r\n offsetSeconds = offsetSeconds ?? 0;\r\n\r\n if (date == null) {\r\n return false;\r\n }\r\n\r\n // Token expired?\r\n return !(date.valueOf() > (new Date().valueOf() + (offsetSeconds * 1000)));\r\n }\r\n\r\n public static readAsDataURL(file: File): Promise<any> {\r\n // Return a new promise\r\n return new Promise((resolve, reject) => {\r\n\r\n // Create a new reader\r\n const reader = new FileReader();\r\n\r\n // Resolve the promise on success\r\n reader.onload = (): void => {\r\n resolve(reader.result);\r\n };\r\n\r\n // Reject the promise on error\r\n reader.onerror = (e): void => {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(e);\r\n };\r\n\r\n // Read the file as the\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n\r\n public static dataURIToBlob(dataURI: string): Blob {\r\n const splitDataURI = dataURI.split(',');\r\n\r\n const byteString = splitDataURI[0].includes('base64') ? atob(splitDataURI[1]) : decodeURI(splitDataURI[1]);\r\n const mimeString = splitDataURI[0].split(':')[1].split(';')[0];\r\n\r\n const ia = new Uint8Array(byteString.length);\r\n for (let i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n return new Blob([ia], { type: mimeString });\r\n }\r\n\r\n public static getFileType(accept: string): 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip' {\r\n let fileType = 'file';\r\n switch (accept) {\r\n case 'image/jpeg':\r\n case 'image/jpg':\r\n fileType = 'jpg';\r\n break;\r\n case 'image/png':\r\n fileType = 'png';\r\n break;\r\n case 'text/csv':\r\n fileType = 'csv';\r\n break;\r\n case 'image/gif':\r\n fileType = 'gif';\r\n break;\r\n case 'application/msword':\r\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\r\n fileType = 'word';\r\n break;\r\n case 'application/vnd.ms-excel':\r\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\r\n fileType = 'word';\r\n break;\r\n case 'application/pdf':\r\n fileType = 'pdf';\r\n break;\r\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\r\n case 'application/vnd.ms-powerpoint':\r\n fileType = 'ppt';\r\n break;\r\n case 'text/plain':\r\n fileType = 'text';\r\n break;\r\n case 'video/mpeg':\r\n case 'video/mp4':\r\n case 'audio/mp4':\r\n fileType = 'video';\r\n break;\r\n case 'aplication/zip':\r\n fileType = 'zip';\r\n break;\r\n }\r\n\r\n return fileType as 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip';\r\n }\r\n\r\n // 添加一个私有方法用于更准确地判断是否为日期字符串\r\n public static isDateString(value: any): boolean {\r\n // 首先检查是否为字符串或数字\r\n if (!value || (typeof value !== 'string' && typeof value !== 'number')) {\r\n return false;\r\n }\r\n\r\n // 转换为字符串进行检查\r\n const stringValue = String(value);\r\n\r\n // 排除纯数字字符串(如 \"1\", \"123\" 等)\r\n if (/^\\d+$/.test(stringValue)) {\r\n return false;\r\n }\r\n\r\n // 尝试解析日期\r\n const parsedDate = Date.parse(stringValue);\r\n\r\n // 检查是否能成功解析且不是纯数字\r\n if (isNaN(parsedDate)) {\r\n return false;\r\n }\r\n\r\n // 使用 dayjs 验证是否为有效日期\r\n return dayjs(stringValue).isValid();\r\n }\r\n\r\n //用于导出时结构转换,columns结构为{ code: string;label: string;}\r\n public static transformObjectsForExport(jsonObjects: any[], columns: any[]): any[] {\r\n return jsonObjects.map((jsonObject) => {\r\n const result: any = {};\r\n columns.forEach((info) => {\r\n const parts = info.code.split('.');\r\n const lastPart = parts.pop()!;\r\n let currentValue = jsonObject;\r\n\r\n // 遍历对象路径,直到找到最终属性所在的对象\r\n parts.forEach((part:any) => {\r\n if (Object.prototype.hasOwnProperty.call(currentValue, part)) {\r\n currentValue = currentValue[part];\r\n } else {\r\n // 如果路径中的任何部分不存在,则设置为 undefined\r\n currentValue = undefined;\r\n }\r\n });\r\n\r\n // 如果最终属性不存在,则设置为默认值(这里为空字符串)\r\n // 或者,您可以根据需要设置其他默认值或进行其他逻辑处理\r\n result[info.code] = currentValue ? (Object.prototype.hasOwnProperty.call(currentValue, lastPart) ? currentValue[lastPart] : '') : '';\r\n });\r\n\r\n return result;\r\n });\r\n }\r\n\r\n private static _base64DecodeUnicode(str: any): string {\r\n return decodeURIComponent(Array.prototype.map.call(atob(str), (c: any) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''));\r\n }\r\n\r\n randomId(stringLength: number = 10): string {\r\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n let id = '';\r\n\r\n for (let i = 0; i < stringLength; i++) {\r\n id += chars.charAt(Math.floor(Math.random() * chars.length));\r\n }\r\n\r\n return id;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAiBa,gBAAgB,CAAA;aACF,IAAA,CAAA,0BAA0B,GAAG,GAAH,CAAO;aACjC,IAAA,CAAA,uBAAuB,GAAG,KAAH,CAAS;aAChC,IAAA,CAAA,sBAAsB,GAAG,SAAH,CAAa;aACnC,IAAA,CAAA,0BAA0B,GAAG,OAAH,CAAW;aACrC,IAAA,CAAA,yBAAyB,GAAG,EAAH,CAAM;aAC9B,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAhD,CAAkD,EAAA;aACrD,IAAA,CAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAhC,CAAkC,EAAA;AAE5D,IAAA,IAAI,iBAAiB,GAAA;QACjB,OAAO;AACH,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,WAAW,EAAE;SAChB;IACL;AAEA,IAAA,IAAI,kBAAkB,GAAA;QAClB,OAAO;AACH,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,WAAW,EAAE;SAChB;IACL;AAEO,IAAA,OAAO,iBAAiB,GAAA;QAC3B,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,kBAAkB;AACzC,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;IAC5C;AAEO,IAAA,OAAO,2BAA2B,GAAA;QACrC,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,kBAAkB;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjD,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;IAC5C;AAEO,IAAA,OAAO,uBAAuB,GAAA;QACjC,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,kBAAkB;AACzC,aAAA,MAAM,CAAC,QAAQ,EAAE,MAAM;AACvB,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;IAC5C;AAEO,IAAA,OAAO,iCAAiC,GAAA;QAC3C,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,kBAAkB;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjD,aAAA,MAAM,CAAC,QAAQ,EAAE,MAAM;AACvB,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;IAC5C;IAEO,OAAO,uBAAuB,CAAC,MAAc,EAAA;QAChD,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzF;IAEO,OAAO,6BAA6B,CAAC,MAAc,EAAA;QACtD,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,QAAQ,EAAE,MAAM;AACvB,aAAA,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzF;IAEO,OAAO,iCAAiC,CAAC,MAAc,EAAA;QAC1D,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjD,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzF;IAEO,OAAO,uCAAuC,CAAC,MAAc,EAAA;QAChE,OAAO,IAAI,WAAW;AACjB,aAAA,MAAM,CAAC,6BAA6B,EAAE,GAAG;AACzC,aAAA,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjD,aAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,sBAAA,EAAyB,YAAY,0CAA0C;AAChG,aAAA,MAAM,CAAC,QAAQ,EAAE,MAAM;AACvB,aAAA,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzF;IAEO,OAAO,cAAc,CAAC,IAAY,EAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAE5B,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YAC9B,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG;AAC3B,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC5B;IAEO,OAAO,cAAc,CAAC,IAAY,EAAA;QACrC,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACvC,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;YAC5D,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG;AAC3B,YAAA,OAAO,EAAE;SACZ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAChC;IAEO,OAAO,WAAW,CAAC,KAAU,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,KAAK,YAAY,UAAU,EAAE;;YAEnC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,OAAO,CAAC;QACvE;aAAO;;;YAGH,OAAO,CAAC,KAAK,CAAC,YAAY;gBACtB,CAAA,QAAA,EAAW,KAAK,CAAC,MAAM,CAAA,EAAA,CAAI;gBAC3B,CAAA,YAAA,EAAe,KAAK,CAAC,UAAU,CAAA,EAAA,CAAI;AACnC,gBAAA,CAAA,SAAA,EAAY,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;QAClC;;QAGA,OAAO,UAAU,CAAC,MAAM,KAAK,IAAI,cAAc,CAAC;IACpD;IAEO,OAAO,sBAAsB,CAAC,IAAS,EAAA;QAE1C,MAAM,SAAS,GAAa,EAAE;AAE9B,QAAA,IAAI,IAAI,YAAY,gBAAgB,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC3B,gBAAA,SAAS,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,uBAAuB,CAAA,EAAG,IAAI,CAAC,0BAA0B,CAAA,CAAA,EAAI,IAAI,CAAC,sBAAsB,CAAA,CAAE,CAAC;YACtH;iBAAO;gBACH,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAEjD,gBAAA,IAAI,cAAc,KAAK,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,YAAY,MAAM,CAAC,EAAE;AAE5F,oBAAA,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE;AAC9B,wBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE;4BAC3D,IAAI,GAAG,EAAE;AACL,gCAAA,SAAS,CAAC,IAAI,CAAC,CAAA,EAAG,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAA,CAAA,EAAI,cAAc,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;4BACrF;AAAO,iCAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;gCAC5B,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;4BAClD;wBACJ;oBACJ;gBACJ;YACJ;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AACjD,gBAAA,SAAS,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC;YAC9D;QACJ;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACnB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC;AAEA,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAC9B,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAA,EAAG,IAAI,CAAC,0BAA0B,CAAA,CAAA,EAAI,IAAI,CAAC,yBAAyB,CAAA,CAAE,CAAC;QACpI;AAEA,QAAA,OAAO,SAAS;IACpB;AAGO,IAAA,OAAO,uBAAuB,CAAC,aAAqB,EAAE,IAAS,EAAE,kBAAkB,GAAG,IAAI,EAAE,sBAAsB,GAAG,KAAK,EAAA;AAC7H,QAAA,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,EAAE;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAEtD,QAAA,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;AAChC,YAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC;AAEzF,YAAA,IAAI,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC7D,gBAAA,OAAO,sBAAsB,GAAG,OAAO,GAAG,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,SAAS;YAC7F;QACJ;QAEA,IAAI,CAAC,kBAAkB,EAAE;AACrB,YAAA,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;gBAEhC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;oBAC9C,IAAI,sBAAsB,EAAE;AACxB,wBAAA,OAAO,OAAO;oBAClB;yBAAO;AACH,wBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC;AACzF,wBAAA,OAAO,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,SAAS;oBAC1D;gBACJ;YACJ;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;IAEO,OAAO,eAAe,CAAC,QAA0B,EAAA;AACpD,QAAA,IAAI,QAAQ,YAAY,YAAY,EAAE;YAClC,OAAO,QAAQ,CAAC,IAAI;QACxB;AAEA,QAAA,IAAI,QAAQ,YAAY,iBAAiB,EAAE;AACvC,YAAA,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO;QAC7C;AACA,QAAA,OAAO,QAAQ;IACnB;IAGO,OAAO,cAAc,CAAC,QAA0B,EAAA;AACnD,QAAA,IAAI,QAAQ,YAAY,gBAAgB,EAAE;AACtC,YAAA,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAChC;AAEA,QAAA,OAAO,KAAK;IAChB;IAEO,OAAO,iBAAiB,CAAC,QAA0B,EAAA;AACtD,QAAA,IAAI,QAAQ,YAAY,gBAAgB,EAAE;AACtC,YAAA,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG;QAClC;AAEA,QAAA,OAAO,KAAK;IAChB;IAEO,OAAO,aAAa,CAAC,QAA0B,EAAA;AAClD,QAAA,IAAI,QAAQ,YAAY,gBAAgB,EAAE;AACtC,YAAA,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG;QAClC;AAEA,QAAA,OAAO,KAAK;IAChB;AAEO,IAAA,OAAO,gBAAgB,CAAC,GAAW,EAAE,IAAa,EAAA;QACrD,IAAI,GAAG,EAAE;YACL,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;YACnC,OAAO,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW;QACjF;AAEA,QAAA,OAAO,KAAK;IAChB;IAEO,OAAO,wBAAwB,CAAC,WAAmB,EAAA;QACtD,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,OAAO,IAAI;QACf;QAEA,MAAM,MAAM,GAAkC,EAAE;QAEhD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACxC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC;YACxD,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,UAAU;QACpD;AAEA,QAAA,OAAO,MAAM;IACjB;AAEO,IAAA,OAAO,UAAU,CAAC,IAAY,EAAE,SAAkB,EAAA;AACrD,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAE/D,QAAA,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;YACvB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;QAChD;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE;AACtD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;QAEvD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;IAClD;IAEO,OAAO,aAAa,CAAC,MAAW,EAAA;AACnC,QAAA,IAAI,MAAc;AAElB,QAAA,IAAI;AACA,YAAA,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC/B,YAAA,OAAO,MAAM;QACjB;AAAE,QAAA,MAAM,cAAc;QAEtB,MAAM,YAAY,GAAQ,EAAE;AAE5B,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACrD;YACJ;YACA,IAAI,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,EAAE;gBACnC;YACJ;YACA,IAAI,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,EAAE;gBACrC;YACJ;YACA,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACrC;QAEA,MAAM,GAAG,4BAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAEpE,QAAA,OAAO,MAAM;IACjB;IAEO,OAAO,YAAY,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5B;AAAE,QAAA,MAAM;AACJ,YAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;gBACpB,OAAO,KAAK,CAAC;YACjB;AAEA,YAAA,OAAO,KAAK;QAChB;IACJ;IAEO,OAAO,qBAAqB,CAAC,IAAY,EAAA;QAC5C,IAAI,IAAI,EAAE;AACN,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD;aAAO;AACH,YAAA,OAAO,IAAI;QACf;IACJ;IAGO,OAAO,WAAW,CAAC,IAAY,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxH;IAEO,OAAO,WAAW,CAAC,KAAU,EAAA;AAChC,QAAA,IAAI,KAAK,YAAY,KAAK,EAAE;YACxB,MAAM,YAAY,GAAa,EAAE;AAEjC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YAC5C;AAEA,YAAA,OAAO,YAAY;QACvB;aAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AAC7D,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE;QAC9B;QAEA,OAAO,KAAK,CAAC;IACjB;AAEO,IAAA,OAAO,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE;IACzD;AAEO,IAAA,OAAO,YAAY,CAAC,GAAW,EAAE,GAAW,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC5D;AAEO,IAAA,OAAO,OAAO,GAAA;AACjB,QAAA,IAAI,IAAY;AAEhB,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;QACjC;aAAO;AACH,YAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;QAChI;QAEA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAClC;AAEO,IAAA,OAAO,OAAO,GAAA;QACjB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;AAEjE,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;AAElC,YAAA,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;AACzC,YAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzB,QAAA,CAAC,CAAC;IACN;IAEO,OAAO,iBAAiB,CAAC,GAAW,EAAA;QACvC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC;AAC5C,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB;IAEO,OAAO,oBAAoB,CAAC,GAAW,EAAA;AAC1C,QAAA,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;IACrE;IAEO,OAAO,eAAe,CAAC,GAAW,EAAA;AACrC,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACtD,QAAA,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC;YACrB,KAAK,CAAC,EAAE;gBACJ;YACJ;YACA,KAAK,CAAC,EAAE;gBACJ,MAAM,IAAI,IAAI;gBACd;YACJ;YACA,KAAK,CAAC,EAAE;gBACJ,MAAM,IAAI,GAAG;gBACb;YACJ;;AAEJ,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;IAC5C;IAEO,OAAO,WAAW,CAAC,KAAa,EAAA;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAE9B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;QAC5C;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC9C;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC9B;IAEO,OAAO,sBAAsB,CAAC,KAAa,EAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEvC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AACvD,YAAA,OAAO,IAAI;QACf;QAEA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;AAE/B,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,OAAO,cAAc,CAAC,KAAa,EAAE,aAAsB,EAAA;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAC/C,QAAA,aAAa,GAAG,aAAa,IAAI,CAAC;AAElC,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AACd,YAAA,OAAO,KAAK;QAChB;;QAGA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9E;IAEO,OAAO,aAAa,CAAC,IAAU,EAAA;;QAElC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;;AAGnC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;;AAG/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAW;AACvB,gBAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1B,YAAA,CAAC;;AAGD,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAU;;gBAEzB,MAAM,CAAC,CAAC,CAAC;AACb,YAAA,CAAC;;AAGD,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC9B,QAAA,CAAC,CAAC;IACN;IAEO,OAAO,aAAa,CAAC,OAAe,EAAA;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvC,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1G,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE9D,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;AAC5C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC/C;IAEO,OAAO,WAAW,CAAC,MAAc,EAAA;QACpC,IAAI,QAAQ,GAAG,MAAM;QACrB,QAAQ,MAAM;AACV,YAAA,KAAK,YAAY;AACjB,YAAA,KAAK,WAAW;gBACZ,QAAQ,GAAG,KAAK;gBAChB;AACJ,YAAA,KAAK,WAAW;gBACZ,QAAQ,GAAG,KAAK;gBAChB;AACJ,YAAA,KAAK,UAAU;gBACX,QAAQ,GAAG,KAAK;gBAChB;AACJ,YAAA,KAAK,WAAW;gBACZ,QAAQ,GAAG,KAAK;gBAChB;AACJ,YAAA,KAAK,oBAAoB;AACzB,YAAA,KAAK,yEAAyE;gBAC1E,QAAQ,GAAG,MAAM;gBACjB;AACJ,YAAA,KAAK,0BAA0B;AAC/B,YAAA,KAAK,mEAAmE;gBACpE,QAAQ,GAAG,MAAM;gBACjB;AACJ,YAAA,KAAK,iBAAiB;gBAClB,QAAQ,GAAG,KAAK;gBAChB;AACJ,YAAA,KAAK,2EAA2E;AAChF,YAAA,KAAK,+BAA+B;gBAChC,QAAQ,GAAG,KAAK;gBAChB;AACJ,YAAA,KAAK,YAAY;gBACb,QAAQ,GAAG,MAAM;gBACjB;AACJ,YAAA,KAAK,YAAY;AACjB,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,WAAW;gBACZ,QAAQ,GAAG,OAAO;gBAClB;AACJ,YAAA,KAAK,gBAAgB;gBACjB,QAAQ,GAAG,KAAK;gBAChB;;AAGR,QAAA,OAAO,QAA4H;IACvI;;IAGO,OAAO,YAAY,CAAC,KAAU,EAAA;;AAEjC,QAAA,IAAI,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;AACpE,YAAA,OAAO,KAAK;QAChB;;AAGA,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;;AAGjC,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC3B,YAAA,OAAO,KAAK;QAChB;;QAGA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;;AAG1C,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AACnB,YAAA,OAAO,KAAK;QAChB;;AAGA,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACvC;;AAGO,IAAA,OAAO,yBAAyB,CAAC,WAAkB,EAAE,OAAc,EAAA;AACtE,QAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KAAI;YAClC,MAAM,MAAM,GAAQ,EAAE;AACtB,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAG;gBAC7B,IAAI,YAAY,GAAG,UAAU;;AAG7B,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAQ,KAAI;AACvB,oBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;AAC1D,wBAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;oBACrC;yBAAO;;wBAEH,YAAY,GAAG,SAAS;oBAC5B;AACJ,gBAAA,CAAC,CAAC;;;AAIF,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AACxI,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,MAAM;AACjB,QAAA,CAAC,CAAC;IACN;IAEQ,OAAO,oBAAoB,CAAC,GAAQ,EAAA;QACxC,OAAO,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAM,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9I;IAEA,QAAQ,CAAC,eAAuB,EAAE,EAAA;QAC9B,MAAM,KAAK,GAAG,gEAAgE;QAC9E,IAAI,EAAE,GAAG,EAAE;AAEX,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAChE;AAEA,QAAA,OAAO,EAAE;IACb;8GAhlBS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AChBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"cmat-services-utils.mjs","sources":["../../../projects/cmat/services/utils/utils.service.ts","../../../projects/cmat/services/utils/cmat-services-utils.ts"],"sourcesContent":["import { HttpErrorResponse, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { IsActiveMatchOptions } from '@angular/router';\r\nimport { CMAT_VERSION } from 'cmat/version';\r\nimport AES from 'crypto-js/aes';\r\nimport CryptoJSCore from 'crypto-js/core';\r\nimport Base64 from 'crypto-js/enc-base64';\r\nimport Hex from 'crypto-js/enc-hex';\r\nimport UTF8 from 'crypto-js/enc-utf8';\r\nimport Pkcs7 from 'crypto-js/pad-pkcs7';\r\nimport dayjs from 'dayjs';\r\nimport { isUndefined } from 'lodash-es';\r\nimport { throwError, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatUtilsService {\r\n public static readonly captionAndMessageSeparator = ':';\r\n public static readonly noNetworkMessageCaption = '无网络';\r\n public static readonly noNetworkMessageDetail = '无法连接服务器';\r\n public static readonly accessDeniedMessageCaption = '拒绝访问!';\r\n public static readonly accessDeniedMessageDetail = '';\r\n private static readonly key = UTF8.parse('14789632236987411478963223698741'); // 32位\n private static readonly iv = UTF8.parse('1478963223698741'); // 16位\n\r\n get exactMatchOptions(): IsActiveMatchOptions {\r\n return {\r\n paths: 'exact',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored',\r\n queryParams: 'exact'\r\n };\r\n }\r\n\r\n get subsetMatchOptions(): IsActiveMatchOptions {\r\n return {\r\n paths: 'subset',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored',\r\n queryParams: 'subset'\r\n };\r\n }\r\n\r\n public static getRequestHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestIdempotentHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestBypassHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('bypass', 'true')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestIdempotentBypassHeaders(): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Content-Type', 'application/json')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('bypass', 'true')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', CMAT_VERSION);\r\n }\r\n\r\n public static getRequestCryptoHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getRequestCryptoBypassHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('bypass', 'true')\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getRequestCryptoIdempotentHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getRequestCryptoIdempotentBypassHeaders(params: string): HttpHeaders {\r\n return new HttpHeaders()\r\n .append('Access-Control-Allow-Origin', '*')\r\n .append('X-Request-ID', CmatUtilsService.newGuid())\r\n .append('Accept', `application/vnd.iman.v${CMAT_VERSION}+json, application/json, text/plain, */*`)\r\n .append('bypass', 'true')\r\n .append('App-Version', this.getEncryptData('partymanageApi' + params).toString());\r\n }\r\n\r\n public static getEncryptData(data: string): string {\r\n const src = UTF8.parse(data);\r\n\r\n return AES.encrypt(src, this.key, {\r\n iv: this.iv,\r\n mode: CryptoJSCore.mode.CBC,\r\n padding: Pkcs7\r\n }).ciphertext.toString();\r\n }\r\n\r\n public static getDecryptData(data: string): string {\r\n const encryptedHexStr = Hex.parse(data);\r\n return AES.decrypt(Base64.stringify(encryptedHexStr), this.key, {\r\n iv: this.iv,\r\n mode: CryptoJSCore.mode.CBC,\r\n padding: Pkcs7\r\n }).toString(UTF8).toString();\r\n }\r\n\r\n public static handleError(error: any): Observable<never> {\r\n if (error.error instanceof ErrorEvent) {\r\n console.error('Client side network error occurred:', error.message);\r\n } else {\r\n console.error('Backend - ' +\r\n `status: ${error.status}, ` +\r\n `statusText: ${error.statusText}, ` +\r\n `message: ${error.error}`);\r\n }\r\n return throwError(() => error ?? 'server error');\r\n }\r\n\r\n public static getHttpResponseMessage(data: any): string[] {\r\n\r\n const responses: string[] = [];\r\n\r\n if (data instanceof HttpResponseBase) {\r\n if (this.checkNoNetwork(data)) {\r\n responses.push(`${this.noNetworkMessageCaption}${this.captionAndMessageSeparator} ${this.noNetworkMessageDetail}`);\r\n } else {\r\n const responseObject = this.getResponseBody(data);\r\n\r\n if (responseObject && (typeof responseObject === 'object' || responseObject instanceof Object)) {\r\n\r\n for (const key in responseObject) {\r\n if (Object.prototype.hasOwnProperty.call(responseObject, key)) {\r\n if (key) {\r\n responses.push(`${key}${this.captionAndMessageSeparator} ${responseObject[key]}`);\r\n } else if (responseObject[key]) {\r\n responses.push(responseObject[key].toString());\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!responses.length && this.getResponseBody(data)) {\r\n responses.push(`${this.getResponseBody(data).toString()}`);\r\n }\r\n }\r\n\r\n if (!responses.length) {\r\n responses.push(data.toString());\r\n }\r\n\r\n if (this.checkAccessDenied(data)) {\r\n responses.splice(0, 0, `${this.accessDeniedMessageCaption}${this.captionAndMessageSeparator} ${this.accessDeniedMessageDetail}`);\r\n }\r\n\r\n return responses;\r\n }\r\n\r\n\r\n public static findHttpResponseMessage(messageToFind: string, data: any, seachInCaptionOnly = true, includeCaptionInResult = false): string | null {\r\n const searchString = messageToFind.toLowerCase();\r\n const httpMessages = this.getHttpResponseMessage(data);\r\n\r\n for (const message of httpMessages) {\r\n const fullMessage = CmatUtilsService.splitInTwo(message, this.captionAndMessageSeparator);\r\n\r\n if (fullMessage.firstPart?.toLowerCase().includes(searchString)) {\r\n return includeCaptionInResult ? message : fullMessage.secondPart ?? fullMessage.firstPart;\r\n }\r\n }\r\n\r\n if (!seachInCaptionOnly) {\r\n for (const message of httpMessages) {\r\n\r\n if (message.toLowerCase().includes(searchString)) {\r\n if (includeCaptionInResult) {\r\n return message;\r\n } else {\r\n const fullMessage = CmatUtilsService.splitInTwo(message, this.captionAndMessageSeparator);\r\n return fullMessage.secondPart ?? fullMessage.firstPart;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public static getResponseBody(response: HttpResponseBase): any {\r\n if (response instanceof HttpResponse) {\r\n return response.body;\r\n }\r\n\r\n if (response instanceof HttpErrorResponse) {\r\n return response.error ?? response.message;\r\n }\r\n return response;\r\n }\r\n\r\n\r\n public static checkNoNetwork(response: HttpResponseBase): boolean {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status === 0;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkAccessDenied(response: HttpResponseBase): boolean {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status === 403;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkNotFound(response: HttpResponseBase): boolean {\r\n if (response instanceof HttpResponseBase) {\r\n return response.status === 404;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static checkIsLocalHost(url: string, base?: string): boolean {\r\n if (url) {\r\n const location = new URL(url, base);\r\n return location.hostname === 'localhost' || location.hostname === '127.0.0.1';\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static getQueryParamsFromString(paramString: string): Record<string, string | null> | null {\r\n if (!paramString) {\r\n return null;\r\n }\r\n\r\n const params: Record<string, string | null> = {};\r\n\r\n for (const param of paramString.split('&')) {\r\n const keyValue = CmatUtilsService.splitInTwo(param, '=');\r\n params[keyValue.firstPart] = keyValue.secondPart;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n public static splitInTwo(text: string, separator?: string): { firstPart: string; secondPart: string | null } {\r\n const separatorIndex = separator ? text.indexOf(separator) : -1;\r\n\r\n if (separatorIndex === -1) {\r\n return { firstPart: text, secondPart: null };\r\n }\r\n\r\n const part1 = text.substring(0, separatorIndex).trim();\r\n const part2 = text.substring(separatorIndex + 1).trim();\r\n\r\n return { firstPart: part1, secondPart: part2 };\r\n }\r\n\r\n public static safeStringify(object: any): string {\r\n let result: string;\r\n\r\n try {\r\n result = JSON.stringify(object);\r\n return result;\r\n } catch { /* empty */ }\r\n\r\n const simpleObject: any = {};\r\n\r\n for (const prop in object) {\r\n if (!Object.prototype.hasOwnProperty.call(object, prop)) {\r\n continue;\r\n }\r\n if (typeof (object[prop]) == 'object') {\r\n continue;\r\n }\r\n if (typeof (object[prop]) == 'function') {\r\n continue;\r\n }\r\n simpleObject[prop] = object[prop];\r\n }\r\n\r\n result = '[***Sanitized Object***]: ' + JSON.stringify(simpleObject);\r\n\r\n return result;\r\n }\r\n\r\n public static jsonTryParse(value: string): string | void {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n if (isUndefined(value)) {\r\n return void 0;\r\n }\r\n\r\n return value;\r\n }\r\n }\r\n\r\n public static capitalizeFirstLetter(text: string): string {\r\n if (text) {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n } else {\r\n return text;\r\n }\r\n }\r\n\r\n\r\n public static toTitleCase(text: string): string {\r\n return text.replace(/\\w\\S*/g, subString => subString.charAt(0).toUpperCase() + subString.substring(1).toLowerCase());\r\n }\r\n\r\n public static toLowerCase(items: any): string | string[] | void {\r\n if (items instanceof Array) {\r\n const loweredRoles: string[] = [];\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n loweredRoles[i] = items[i].toLowerCase();\r\n }\r\n\r\n return loweredRoles;\r\n } else if (typeof items === 'string' || items instanceof String) {\r\n return items.toLowerCase();\r\n }\r\n\r\n return void 0;\r\n }\r\n\r\n public static uniqueId(): string {\r\n return this.randomNumber(1000000, 9000000).toString();\r\n }\r\n\r\n public static randomNumber(min: number, max: number): number {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n }\r\n\r\n public static baseUrl(): string {\r\n let base: string;\r\n\r\n if (window.location.origin) {\r\n base = window.location.origin;\r\n } else {\r\n base = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\r\n }\r\n\r\n return base.replace(/\\/$/, '');\r\n }\r\n\r\n public static newGuid(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n\r\n const r = (Math.random() * 16) | 0;\r\n\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n public static testIsAbsoluteUrl(url: string): boolean {\r\n const r = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n return r.test(url);\r\n }\r\n\r\n public static convertToAbsoluteUrl(url: string): string {\r\n return CmatUtilsService.testIsAbsoluteUrl(url) ? url : '//' + url;\r\n }\r\n\r\n public static urlBase64Decode(str: string): string {\r\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\r\n switch (output.length % 4) {\r\n case 0: {\r\n break;\r\n }\r\n case 2: {\r\n output += '==';\r\n break;\r\n }\r\n case 3: {\r\n output += '=';\r\n break;\r\n }\r\n }\r\n return this._base64DecodeUnicode(output);\r\n }\r\n\r\n public static decodeToken(token: string): any {\r\n const parts = token.split('.');\r\n\r\n if (parts.length !== 3) {\r\n throw new Error('JWT must have 3 parts');\r\n }\r\n\r\n const decoded = this.urlBase64Decode(parts[1]);\r\n if (!decoded) {\r\n throw new Error('Cannot decode the token');\r\n }\r\n\r\n return JSON.parse(decoded);\r\n }\r\n\r\n public static getTokenExpirationDate(token: string): Date | null {\r\n const decoded = this.decodeToken(token);\r\n\r\n if (!Object.prototype.hasOwnProperty.call(decoded, 'exp')) {\r\n return null;\r\n }\r\n\r\n const date = new Date(0); // The 0 here is the key, which sets the date to the epoch\r\n date.setUTCSeconds(decoded.exp);\r\n\r\n return date;\r\n }\r\n\r\n public static isTokenExpired(token: string, offsetSeconds?: number): boolean {\r\n const date = this.getTokenExpirationDate(token);\r\n offsetSeconds = offsetSeconds ?? 0;\r\n\r\n if (date == null) {\r\n return false;\r\n }\r\n return !(date.valueOf() > (new Date().valueOf() + (offsetSeconds * 1000)));\r\n }\r\n\r\n public static readAsDataURL(file: File): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (): void => {\r\n resolve(reader.result);\r\n };\r\n reader.onerror = (e): void => {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(e);\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n\r\n public static dataURIToBlob(dataURI: string): Blob {\r\n const splitDataURI = dataURI.split(',');\r\n\r\n const byteString = splitDataURI[0].includes('base64') ? atob(splitDataURI[1]) : decodeURI(splitDataURI[1]);\r\n const mimeString = splitDataURI[0].split(':')[1].split(';')[0];\r\n\r\n const ia = new Uint8Array(byteString.length);\r\n for (let i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n return new Blob([ia], { type: mimeString });\r\n }\r\n\r\n public static getFileType(accept: string): 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip' {\r\n let fileType = 'file';\r\n switch (accept) {\r\n case 'image/jpeg':\r\n case 'image/jpg':\r\n fileType = 'jpg';\r\n break;\r\n case 'image/png':\r\n fileType = 'png';\r\n break;\r\n case 'text/csv':\r\n fileType = 'csv';\r\n break;\r\n case 'image/gif':\r\n fileType = 'gif';\r\n break;\r\n case 'application/msword':\r\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\r\n fileType = 'word';\r\n break;\r\n case 'application/vnd.ms-excel':\r\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\r\n fileType = 'word';\r\n break;\r\n case 'application/pdf':\r\n fileType = 'pdf';\r\n break;\r\n case 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\r\n case 'application/vnd.ms-powerpoint':\r\n fileType = 'ppt';\r\n break;\r\n case 'text/plain':\r\n fileType = 'text';\r\n break;\r\n case 'video/mpeg':\r\n case 'video/mp4':\r\n case 'audio/mp4':\r\n fileType = 'video';\r\n break;\r\n case 'aplication/zip':\r\n fileType = 'zip';\r\n break;\r\n }\r\n\r\n return fileType as 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip';\r\n }\r\n public static isDateString(value: any): boolean {\r\n if (!value || (typeof value !== 'string' && typeof value !== 'number')) {\r\n return false;\r\n }\r\n const stringValue = String(value);\r\n if (/^\\d+$/.test(stringValue)) {\r\n return false;\r\n }\r\n const parsedDate = Date.parse(stringValue);\r\n if (isNaN(parsedDate)) {\r\n return false;\r\n }\r\n return dayjs(stringValue).isValid();\r\n }\r\n public static transformObjectsForExport(jsonObjects: any[], columns: any[]): any[] {\r\n return jsonObjects.map((jsonObject) => {\r\n const result: any = {};\r\n columns.forEach((info) => {\r\n const parts = info.code.split('.');\r\n const lastPart = parts.pop()!;\r\n let currentValue = jsonObject;\r\n parts.forEach((part:any) => {\r\n if (Object.prototype.hasOwnProperty.call(currentValue, part)) {\r\n currentValue = currentValue[part];\r\n } else {\r\n currentValue = undefined;\r\n }\r\n });\r\n result[info.code] = currentValue ? (Object.prototype.hasOwnProperty.call(currentValue, lastPart) ? currentValue[lastPart] : '') : '';\r\n });\r\n\r\n return result;\r\n });\r\n }\r\n\r\n private static _base64DecodeUnicode(str: any): string {\r\n return decodeURIComponent(Array.prototype.map.call(atob(str), (c: any) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''));\r\n }\r\n\r\n randomId(stringLength: number = 10): string {\r\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n let id = '';\r\n\r\n for (let i = 0; i < stringLength; i++) {\r\n id += chars.charAt(Math.floor(Math.random() * chars.length));\r\n }\r\n\r\n return id;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,28 +4,20 @@ class CmatValidators {
|
|
|
4
4
|
}
|
|
5
5
|
static mustMatch(controlPath, matchingControlPath) {
|
|
6
6
|
return (formGroup) => {
|
|
7
|
-
// Get the control and matching control
|
|
8
7
|
const control = formGroup.get(controlPath);
|
|
9
8
|
const matchingControl = formGroup.get(matchingControlPath);
|
|
10
|
-
// Return if control or matching control doesn't exist
|
|
11
9
|
if (!control || !matchingControl) {
|
|
12
10
|
return null;
|
|
13
11
|
}
|
|
14
|
-
// Delete the mustMatch error to reset the error on the matching control
|
|
15
12
|
if (matchingControl.hasError('mustMatch')) {
|
|
16
13
|
delete matchingControl.errors?.['mustMatch'];
|
|
17
14
|
matchingControl.updateValueAndValidity();
|
|
18
15
|
}
|
|
19
|
-
// Don't validate empty values on the matching control
|
|
20
|
-
// Don't validate if values are matching
|
|
21
16
|
if (this.isEmptyInputValue(matchingControl.value) || control.value === matchingControl.value) {
|
|
22
17
|
return null;
|
|
23
18
|
}
|
|
24
|
-
// Prepare the validation errors
|
|
25
19
|
const errors = { mustMatch: true };
|
|
26
|
-
// Set the validation error on the matching control
|
|
27
20
|
matchingControl.setErrors(errors);
|
|
28
|
-
// Return the errors
|
|
29
21
|
return errors;
|
|
30
22
|
};
|
|
31
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-validators.mjs","sources":["../../../projects/cmat/validators/validators.ts","../../../projects/cmat/validators/cmat-validators.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport class CmatValidators {\r\n static isEmptyInputValue(value: any): boolean {\r\n return value == null || value.length === 0;\r\n }\r\n\r\n static mustMatch(controlPath: string, matchingControlPath: string): ValidatorFn {\r\n return (formGroup: AbstractControl): ValidationErrors | null => {\r\n
|
|
1
|
+
{"version":3,"file":"cmat-validators.mjs","sources":["../../../projects/cmat/validators/validators.ts","../../../projects/cmat/validators/cmat-validators.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport class CmatValidators {\r\n static isEmptyInputValue(value: any): boolean {\r\n return value == null || value.length === 0;\r\n }\r\n\r\n static mustMatch(controlPath: string, matchingControlPath: string): ValidatorFn {\r\n return (formGroup: AbstractControl): ValidationErrors | null => {\r\n const control = formGroup.get(controlPath);\r\n const matchingControl = formGroup.get(matchingControlPath);\r\n if (!control || !matchingControl) {\r\n return null;\r\n }\r\n if (matchingControl.hasError('mustMatch')) {\r\n delete matchingControl.errors?.['mustMatch'];\r\n matchingControl.updateValueAndValidity();\r\n }\r\n if (this.isEmptyInputValue(matchingControl.value) || control.value === matchingControl.value) {\r\n return null;\r\n }\r\n const errors = { mustMatch: true };\r\n matchingControl.setErrors(errors);\r\n return errors;\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"MAEa,cAAc,CAAA;IACvB,OAAO,iBAAiB,CAAC,KAAU,EAAA;QAC/B,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;IAC9C;AAEA,IAAA,OAAO,SAAS,CAAC,WAAmB,EAAE,mBAA2B,EAAA;QAC7D,OAAO,CAAC,SAA0B,KAA6B;YAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1C,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC1D,YAAA,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE;AAC9B,gBAAA,OAAO,IAAI;YACf;AACA,YAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACvC,gBAAA,OAAO,eAAe,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC5C,eAAe,CAAC,sBAAsB,EAAE;YAC5C;AACA,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;AAC1F,gBAAA,OAAO,IAAI;YACf;AACA,YAAA,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAClC,YAAA,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC;AACjC,YAAA,OAAO,MAAM;AACjB,QAAA,CAAC;IACL;AACH;;AC1BD;;AAEG;;;;"}
|