cmat 0.0.81 → 0.0.83
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 +19 -13
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +20 -20
- package/fesm2022/cmat-components-carousel.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +7 -5
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-code-editor.mjs +3 -2
- package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +228 -108
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +20 -11
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +1 -1
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +29 -11
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +16 -26
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +8 -7
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +28 -16
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +14 -14
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +2 -2
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +8 -5
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +2 -2
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-qrcode.mjs +9 -2
- package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +1 -1
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +25 -24
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +42 -15
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +3 -1
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +24 -5
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +20 -13
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +11 -6
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +4 -3
- package/fesm2022/cmat-components-treetable.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +29 -15
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-components-x6-angular-shape.mjs +2 -2
- package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +12 -18
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +3 -2
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +7 -7
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +9 -5
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +9 -1
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-services-alert.mjs +16 -7
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +11 -10
- package/fesm2022/cmat-services-export-as.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +42 -4
- package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +2 -2
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +78 -57
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat-validators.mjs +4 -1
- package/fesm2022/cmat-validators.mjs.map +1 -1
- package/fesm2022/cmat.mjs +759 -438
- package/fesm2022/cmat.mjs.map +1 -1
- package/package.json +1 -1
- package/types/cmat-components-adapter.d.ts +24 -24
- package/types/cmat-components-breadcrumb.d.ts +1 -1
- package/types/cmat-components-card.d.ts +1 -1
- package/types/cmat-components-carousel.d.ts +23 -23
- package/types/cmat-components-cascade.d.ts +12 -12
- package/types/cmat-components-chip-input.d.ts +8 -8
- package/types/cmat-components-code-editor.d.ts +2 -2
- package/types/cmat-components-custom-formly.d.ts +121 -44
- package/types/cmat-components-date-range.d.ts +30 -16
- package/types/cmat-components-drawer.d.ts +2 -2
- package/types/cmat-components-file-preview.d.ts +1 -1
- package/types/cmat-components-image-viewer.d.ts +5 -3
- package/types/cmat-components-json-editor.d.ts +7 -9
- package/types/cmat-components-knob-input.d.ts +3 -3
- package/types/cmat-components-masonry.d.ts +3 -3
- package/types/cmat-components-material-color-picker.d.ts +13 -9
- package/types/cmat-components-material-datetimepicker.d.ts +26 -10
- package/types/cmat-components-navigation.d.ts +14 -14
- package/types/cmat-components-opt-input.d.ts +8 -8
- package/types/cmat-components-popover.d.ts +1 -1
- package/types/cmat-components-qrcode.d.ts +2 -1
- package/types/cmat-components-rating.d.ts +13 -13
- package/types/cmat-components-select-search.d.ts +5 -5
- package/types/cmat-components-select-table.d.ts +12 -8
- package/types/cmat-components-select-tree.d.ts +1 -1
- package/types/cmat-components-speed-dial.d.ts +3 -0
- package/types/cmat-components-timeline.d.ts +2 -2
- package/types/cmat-components-toast.d.ts +2 -2
- package/types/cmat-components-transfer-picker.d.ts +5 -4
- package/types/cmat-components-treetable.d.ts +2 -2
- package/types/cmat-components-upload.d.ts +35 -28
- package/types/cmat-components-x6-angular-shape.d.ts +1 -1
- package/types/cmat-directives-autofocus.d.ts +1 -1
- package/types/cmat-directives-data-exporter.d.ts +2 -1
- package/types/cmat-directives-debounce.d.ts +5 -5
- package/types/cmat-directives-digit-only.d.ts +7 -7
- package/types/cmat-directives-seamless-auto-scroll.d.ts +2 -2
- package/types/cmat-lib-mock-api.d.ts +1 -1
- package/types/cmat-pipes-find-by-key.d.ts +2 -1
- package/types/cmat-pipes-group-by.d.ts +6 -1
- package/types/cmat-pipes-keys.d.ts +4 -1
- package/types/cmat-pipes-secure.d.ts +1 -0
- package/types/cmat-services-alert.d.ts +14 -13
- package/types/cmat-services-data.d.ts +3 -3
- package/types/cmat-services-export-as.d.ts +4 -3
- package/types/cmat-services-local-storage.d.ts +10 -2
- package/types/cmat-services-translation.d.ts +3 -3
- package/types/cmat-services-utils.d.ts +31 -15
- package/types/cmat-validators.d.ts +1 -1
- package/types/cmat.d.ts +463 -304
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-pipes-group-by.mjs","sources":["../../../projects/cmat/pipes/group-by/group-by.pipe.ts","../../../projects/cmat/pipes/group-by/cmat-pipes-group-by.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'cmatGroupBy'\r\n})\r\nexport class CmatGroupByPipe implements PipeTransform {\r\n\r\n transform(value:
|
|
1
|
+
{"version":3,"file":"cmat-pipes-group-by.mjs","sources":["../../../projects/cmat/pipes/group-by/group-by.pipe.ts","../../../projects/cmat/pipes/group-by/cmat-pipes-group-by.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\ntype GroupByItem = Record<string, unknown>;\r\n\r\ninterface GroupByResult<T extends GroupByItem> {\r\n key: string;\r\n value: T[];\r\n}\r\n\r\n@Pipe({\r\n name: 'cmatGroupBy'\r\n})\r\nexport class CmatGroupByPipe implements PipeTransform {\r\n\r\n transform<T extends GroupByItem>(value: T[] | null | undefined, field: string): GroupByResult<T>[] {\r\n\r\n if (!value) {\r\n return [];\r\n }\r\n\r\n const groupedObj = value.reduce<Record<string, T[]>>((prev, cur) => {\r\n const rawValue = cur[field];\r\n const groupKey = typeof rawValue === 'string' || typeof rawValue === 'number' || typeof rawValue === 'boolean' || typeof rawValue === 'bigint'\r\n ? String(rawValue)\r\n : '';\r\n\r\n if (!prev[groupKey]) {\r\n prev[groupKey] = [cur];\r\n } else {\r\n prev[groupKey].push(cur);\r\n }\r\n\r\n return prev;\r\n }, {});\r\n\r\n return Object.keys(groupedObj).map((key): GroupByResult<T> => ({ key, value: groupedObj[key] }));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAYa,eAAe,CAAA;IAExB,SAAS,CAAwB,KAA6B,EAAE,KAAa,EAAA;QAEzE,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,EAAE;QACb;QAEA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAsB,CAAC,IAAI,EAAE,GAAG,KAAI;AAC/D,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK;AAClI,kBAAE,MAAM,CAAC,QAAQ;kBACf,EAAE;AAER,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAC1B;iBAAO;gBACH,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B;AAEA,YAAA,OAAO,IAAI;QACf,CAAC,EAAE,EAAE,CAAC;QAEN,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAwB,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG;8GAxBS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACXD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-pipes-keys.mjs","sources":["../../../projects/cmat/pipes/keys/keys.pipe.ts","../../../projects/cmat/pipes/keys/cmat-pipes-keys.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'cmatKeys'\r\n})\r\nexport class CmatKeysPipe implements PipeTransform {\r\n transform(value:
|
|
1
|
+
{"version":3,"file":"cmat-pipes-keys.mjs","sources":["../../../projects/cmat/pipes/keys/keys.pipe.ts","../../../projects/cmat/pipes/keys/cmat-pipes-keys.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'cmatKeys'\r\n})\r\nexport class CmatKeysPipe implements PipeTransform {\r\n transform(value: Record<string, unknown>): { key: string; value: unknown }[] {\r\n const keys: { key: string; value: unknown }[] = [];\r\n\r\n for (const key in value) {\r\n if (Object.prototype.hasOwnProperty.call(value, key)) {\r\n keys.push({\r\n key: key,\r\n value: value[key]\r\n });\r\n }\r\n }\r\n\r\n return keys;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAKa,YAAY,CAAA;AACrB,IAAA,SAAS,CAAC,KAA8B,EAAA;QACpC,MAAM,IAAI,GAAsC,EAAE;AAElD,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACrB,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;gBAClD,IAAI,CAAC,IAAI,CAAC;AACN,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,KAAK,CAAC,GAAG;AACnB,iBAAA,CAAC;YACN;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;8GAdS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACJD;;AAEG;;;;"}
|
|
@@ -13,6 +13,7 @@ class CmatSecurePipe {
|
|
|
13
13
|
this._sanitizer = inject(DomSanitizer);
|
|
14
14
|
this._urlStateConfigService = inject(CmatUrlStateConfigService);
|
|
15
15
|
this._destroyRef = inject(DestroyRef);
|
|
16
|
+
this._previousObjectUrl = null;
|
|
16
17
|
this._urlStateConfigService.config$
|
|
17
18
|
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
18
19
|
.subscribe((config) => {
|
|
@@ -28,7 +29,14 @@ class CmatSecurePipe {
|
|
|
28
29
|
isStream: false
|
|
29
30
|
}
|
|
30
31
|
})
|
|
31
|
-
.pipe(map((val) =>
|
|
32
|
+
.pipe(map((val) => {
|
|
33
|
+
if (this._previousObjectUrl) {
|
|
34
|
+
URL.revokeObjectURL(this._previousObjectUrl);
|
|
35
|
+
}
|
|
36
|
+
const objectUrl = URL.createObjectURL(val);
|
|
37
|
+
this._previousObjectUrl = objectUrl;
|
|
38
|
+
return this._sanitizer.bypassSecurityTrustUrl(objectUrl);
|
|
39
|
+
}));
|
|
32
40
|
}
|
|
33
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatSecurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
34
42
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: CmatSecurePipe, isStandalone: true, name: "cmatSecure" }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-pipes-secure.mjs","sources":["../../../projects/cmat/pipes/secure/secure-pipe.ts","../../../projects/cmat/pipes/secure/cmat-pipes-secure.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { DestroyRef, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { CmatUrlStateConfigService, IUrlStateConfig } from 'cmat/services/config';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n\r\n@Pipe({\r\n name: 'cmatSecure'\r\n})\r\nexport class CmatSecurePipe implements PipeTransform {\r\n private _http = inject(HttpClient);\r\n private _sanitizer = inject(DomSanitizer);\r\n private _urlStateConfigService = inject(CmatUrlStateConfigService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _config: IUrlStateConfig;\r\n\r\n constructor() {\r\n this._urlStateConfigService.config$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((config: IUrlStateConfig) => {\r\n this._config = config;\r\n });\r\n }\r\n\r\n transform(fileId: string): Observable<SafeUrl> {\r\n return this._http\r\n .get(`${this._config.fileUrl}/download/${fileId}`, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders(fileId.toString()),\r\n responseType: 'blob',\r\n params: {\r\n isStream: false\r\n }\r\n })\r\n .pipe(map((val: Blob | MediaSource) => this.
|
|
1
|
+
{"version":3,"file":"cmat-pipes-secure.mjs","sources":["../../../projects/cmat/pipes/secure/secure-pipe.ts","../../../projects/cmat/pipes/secure/cmat-pipes-secure.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { DestroyRef, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { CmatUrlStateConfigService, IUrlStateConfig } from 'cmat/services/config';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n\r\n@Pipe({\r\n name: 'cmatSecure'\r\n})\r\nexport class CmatSecurePipe implements PipeTransform {\r\n private _http = inject(HttpClient);\r\n private _sanitizer = inject(DomSanitizer);\r\n private _urlStateConfigService = inject(CmatUrlStateConfigService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _config: IUrlStateConfig;\r\n private _previousObjectUrl: string | null = null;\r\n\r\n constructor() {\r\n this._urlStateConfigService.config$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((config: IUrlStateConfig) => {\r\n this._config = config;\r\n });\r\n }\r\n\r\n transform(fileId: string): Observable<SafeUrl> {\r\n return this._http\r\n .get(`${this._config.fileUrl}/download/${fileId}`, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders(fileId.toString()),\r\n responseType: 'blob',\r\n params: {\r\n isStream: false\r\n }\r\n })\r\n .pipe(map((val: Blob | MediaSource) => {\r\n if (this._previousObjectUrl) {\r\n URL.revokeObjectURL(this._previousObjectUrl);\r\n }\r\n const objectUrl = URL.createObjectURL(val);\r\n this._previousObjectUrl = objectUrl;\r\n return this._sanitizer.bypassSecurityTrustUrl(objectUrl);\r\n }));\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAaa,cAAc,CAAA;AASvB,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;AACjC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACjD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAGzC,IAAA,CAAA,kBAAkB,GAAkB,IAAI;QAG5C,IAAI,CAAC,sBAAsB,CAAC;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,MAAuB,KAAI;AACnC,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,SAAS,CAAC,MAAc,EAAA;QACpB,OAAO,IAAI,CAAC;aACP,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA,UAAA,EAAa,MAAM,CAAA,CAAE,EAAE;YAC/C,OAAO,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpE,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,MAAM,EAAE;AACJ,gBAAA,QAAQ,EAAE;AACb;SACJ;AACA,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;AAClC,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAChD;YACA,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AAC1C,YAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;YACnC,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,SAAS,CAAC;QAC5D,CAAC,CAAC,CAAC;IACX;8GAlCS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACZD;;AAEG;;;;"}
|
|
@@ -46,6 +46,7 @@ class CmatAlertService {
|
|
|
46
46
|
this._stickyMessages = new Subject();
|
|
47
47
|
this._dialogs = new Subject();
|
|
48
48
|
this._isLoading = new Subject();
|
|
49
|
+
this._loadingMessageId = null;
|
|
49
50
|
}
|
|
50
51
|
get dialogEvent$() {
|
|
51
52
|
return this._dialogs.asObservable();
|
|
@@ -120,8 +121,9 @@ class CmatAlertService {
|
|
|
120
121
|
if (this.isApiResult(error)) {
|
|
121
122
|
separatorOrDetail += error.msg;
|
|
122
123
|
}
|
|
124
|
+
const serializedError = CmatUtilsService.safeStringify(error);
|
|
123
125
|
const msg = `Message.Severity: "${CmatMessageSeverity[severity]}", Message.Summary: "${data}",
|
|
124
|
-
Message.Detail: "${separatorOrDetail}", Message.Error: "${
|
|
126
|
+
Message.Detail: "${separatorOrDetail}", Message.Error: "${serializedError}"`;
|
|
125
127
|
switch (severity) {
|
|
126
128
|
case CmatMessageSeverity.info:
|
|
127
129
|
this.logInfo(msg);
|
|
@@ -145,14 +147,14 @@ class CmatAlertService {
|
|
|
145
147
|
}
|
|
146
148
|
startLoadingMessage(message = '载入中...', caption = '') {
|
|
147
149
|
this._isLoading.next(true);
|
|
148
|
-
|
|
150
|
+
this._clearLoadingMessageTimer();
|
|
149
151
|
this._loadingMessageId = setTimeout(() => {
|
|
150
152
|
this.showStickyMessage(caption, message, CmatMessageSeverity.wait);
|
|
151
153
|
}, 1000);
|
|
152
154
|
}
|
|
153
155
|
stopLoadingMessage() {
|
|
154
156
|
this._isLoading.next(false);
|
|
155
|
-
|
|
157
|
+
this._clearLoadingMessageTimer();
|
|
156
158
|
this.resetStickyMessage();
|
|
157
159
|
}
|
|
158
160
|
logDebug(msg) {
|
|
@@ -185,10 +187,17 @@ class CmatAlertService {
|
|
|
185
187
|
}
|
|
186
188
|
}
|
|
187
189
|
isApiResult(obj) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
typeof
|
|
191
|
-
typeof
|
|
190
|
+
const result = obj;
|
|
191
|
+
return typeof result === 'object' && result !== null
|
|
192
|
+
&& typeof result.success === 'boolean'
|
|
193
|
+
&& typeof result.msg === 'string'
|
|
194
|
+
&& typeof result.type === 'number';
|
|
195
|
+
}
|
|
196
|
+
_clearLoadingMessageTimer() {
|
|
197
|
+
if (this._loadingMessageId !== null) {
|
|
198
|
+
clearTimeout(this._loadingMessageId);
|
|
199
|
+
this._loadingMessageId = null;
|
|
200
|
+
}
|
|
192
201
|
}
|
|
193
202
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
194
203
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatAlertService, providedIn: 'root' }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-services-alert.mjs","sources":["../../../projects/cmat/services/alert/alert.dialog.ts","../../../projects/cmat/services/alert/alert.message.ts","../../../projects/cmat/services/alert/enum.ts","../../../projects/cmat/services/alert/alert.service.ts","../../../projects/cmat/services/alert/cmat-services-alert.ts"],"sourcesContent":["import { CmatDialogType } from './enum';\r\n\r\nexport class CmatAlertDialog {\r\n constructor(public message: string, public type: CmatDialogType, public okCallback?: (val?: any) => any, public cancelCallback?: () => any,\r\n public defaultValue?: string, public okLabel?: string, public cancelLabel?: string) {\r\n\r\n }\r\n}\r\n","import { CmatMessageSeverity } from './enum';\r\n\r\nexport class CmatAlertMessage {\r\n constructor(public severity: CmatMessageSeverity, public summary: string, public detail: string, public isPostionBottom: boolean = false) { }\r\n}\r\n","export enum CmatDialogType {\r\n alert,\r\n confirm,\r\n prompt\r\n}\r\n\r\nexport enum CmatMessageSeverity {\r\n info = 'info',\r\n success = 'success',\r\n error = 'error',\r\n warning = 'warning',\r\n wait = 'wait'\r\n}\r\n\r\nexport interface ApiResult {\r\n success: boolean;\r\n msg: string;\r\n type: number;\r\n data?: any;\r\n dataExt?: any;\r\n}","import { HttpResponseBase } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { CmatAlertDialog } from './alert.dialog';\r\nimport { CmatAlertMessage } from './alert.message';\r\nimport { ApiResult, CmatDialogType, CmatMessageSeverity } from './enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatAlertService {\r\n private _messages = new Subject<CmatAlertMessage>();\r\n private _stickyMessages = new Subject<CmatAlertMessage | void>();\r\n private _dialogs = new Subject<CmatAlertDialog>();\r\n\r\n private _isLoading = new Subject<boolean>();\r\n private _loadingMessageId: any;\r\n\r\n get dialogEvent$(): Observable<CmatAlertDialog> {\r\n return this._dialogs.asObservable();\r\n }\r\n\r\n\r\n get messageEvent$(): Observable<CmatAlertMessage> {\r\n return this._messages.asObservable();\r\n }\r\n\r\n get stickyMessageEvent$(): Observable<CmatAlertMessage | void> {\r\n return this._stickyMessages.asObservable();\r\n }\r\n\r\n get isLoadingInProgress$(): Observable<boolean> {\r\n return this._isLoading.asObservable();\r\n }\r\n\r\n showDialog(message: string, type?: CmatDialogType, okCallback?: (val?: any) => any, cancelCallback?: () => any,\r\n okLabel?: string, cancelLabel?: string, defaultValue?: string): void {\r\n\r\n type ??= CmatDialogType.alert;\r\n\r\n this._dialogs.next({\r\n message: message,\r\n type: type,\r\n okCallback: okCallback,\r\n cancelCallback: cancelCallback,\r\n okLabel: okLabel,\r\n cancelLabel: cancelLabel,\r\n defaultValue: defaultValue\r\n });\r\n }\r\n\r\n showMessage(summary: string): void;\r\n showMessage(detail: string | string[] | HttpResponseBase, params: string, severity: CmatMessageSeverity): void;\r\n showMessage(data: any, separatorOrDetail?: string, severity?: CmatMessageSeverity): void {\r\n severity ??= CmatMessageSeverity.info;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = CmatUtilsService.getHttpResponseMessage(data);\r\n separatorOrDetail = CmatUtilsService.captionAndMessageSeparator;\r\n }\r\n\r\n if (data instanceof Array) {\r\n for (const message of data) {\r\n const msgObject = CmatUtilsService.splitInTwo(message, separatorOrDetail);\r\n\r\n this._showMessageHelper(msgObject.firstPart, msgObject.secondPart ?? '', severity, false);\r\n }\r\n } else {\r\n this._showMessageHelper(data, separatorOrDetail ?? '', severity, false);\r\n }\r\n }\r\n\r\n showBottomMessage(summary: string): void;\r\n showBottomMessage(summary: string, detail: string, severity: CmatMessageSeverity): void;\r\n showBottomMessage(data: any, separatorOrDetail?: string, severity?: CmatMessageSeverity): void {\r\n severity ??= CmatMessageSeverity.info;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = CmatUtilsService.getHttpResponseMessage(data);\r\n separatorOrDetail = CmatUtilsService.captionAndMessageSeparator;\r\n }\r\n\r\n if (data instanceof Array) {\r\n for (const message of data) {\r\n const msgObject = CmatUtilsService.splitInTwo(message, separatorOrDetail);\r\n\r\n this._showMessageHelper(msgObject.firstPart, msgObject.secondPart ?? '', severity, true, true);\r\n }\r\n } else {\r\n this._showMessageHelper(data, separatorOrDetail ?? '', severity, true, true);\r\n }\r\n }\r\n\r\n\r\n showStickyMessage(summary: string): void;\r\n showStickyMessage(summary: string, detail: string, severity: CmatMessageSeverity, error?: any): void;\r\n showStickyMessage(detail: string[] | HttpResponseBase, params: string, severity: CmatMessageSeverity): void;\r\n showStickyMessage(data: any, separatorOrDetail?: string, severity?: CmatMessageSeverity, error?: any): void {\r\n\r\n severity ??= CmatMessageSeverity.info;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = CmatUtilsService.getHttpResponseMessage(data);\r\n separatorOrDetail = CmatUtilsService.captionAndMessageSeparator;\r\n }\r\n\r\n\r\n if (data instanceof Array) {\r\n for (const message of data) {\r\n const msgObject = CmatUtilsService.splitInTwo(message, separatorOrDetail); this._showMessageHelper(msgObject.firstPart, msgObject.secondPart ?? '', severity, true);\r\n }\r\n } else {\r\n if (error) {\r\n if (this.isApiResult(error)) {\r\n separatorOrDetail += error.msg;\r\n }\r\n\r\n const msg = `Message.Severity: \"${CmatMessageSeverity[severity]}\", Message.Summary: \"${data}\", \r\n Message.Detail: \"${separatorOrDetail}\", Message.Error: \"${CmatUtilsService.safeStringify(error)}\"`;\r\n\r\n switch (severity) {\r\n case CmatMessageSeverity.info:\r\n this.logInfo(msg);\r\n break;\r\n case CmatMessageSeverity.success:\r\n this.logMessage(msg);\r\n break;\r\n case CmatMessageSeverity.error:\r\n this.logError(msg);\r\n break;\r\n case CmatMessageSeverity.warning:\r\n this.logWarning(msg);\r\n break;\r\n case CmatMessageSeverity.wait:\r\n this.logTrace(msg);\r\n break;\r\n }\r\n }\r\n\r\n this._showMessageHelper(data, separatorOrDetail ?? '', severity, true);\r\n }\r\n }\r\n\r\n startLoadingMessage(message = '载入中...', caption = ''): void {\r\n this._isLoading.next(true);\r\n clearTimeout(this._loadingMessageId);\r\n\r\n this._loadingMessageId = setTimeout(() => {\r\n this.showStickyMessage(caption, message, CmatMessageSeverity.wait);\r\n }, 1000);\r\n }\r\n\r\n stopLoadingMessage(): void {\r\n this._isLoading.next(false);\r\n clearTimeout(this._loadingMessageId);\r\n this.resetStickyMessage();\r\n }\r\n\r\n\r\n logDebug(msg: any): void {\r\n console.debug(msg);\r\n }\r\n\r\n logError(msg: any): void {\r\n console.error(msg);\r\n }\r\n\r\n logInfo(msg: any): void {\r\n console.info(msg);\r\n }\r\n\r\n logMessage(msg: any): void {\r\n console.log(msg);\r\n }\r\n\r\n logTrace(msg: any): void {\r\n console.trace(msg);\r\n }\r\n\r\n logWarning(msg: any): void {\r\n console.warn(msg);\r\n }\r\n\r\n resetStickyMessage(): void {\r\n this._stickyMessages.next(void 0);\r\n }\r\n\r\n private _showMessageHelper(summary: string, detail: string, severity: CmatMessageSeverity, isSticky: boolean, isPostionBottom: boolean = false): void {\r\n\r\n if (isSticky) {\r\n this._stickyMessages.next({ severity: severity, summary: summary, detail: detail, isPostionBottom: isPostionBottom });\r\n } else {\r\n this._messages.next({ severity: severity, summary: summary, detail: detail, isPostionBottom: isPostionBottom });\r\n }\r\n }\r\n\r\n private isApiResult(obj: any): obj is ApiResult {\r\n return (\r\n obj &&\r\n typeof obj.success === 'boolean' &&\r\n typeof obj.msg === 'string' &&\r\n typeof obj.type === 'number'\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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"}
|
|
1
|
+
{"version":3,"file":"cmat-services-alert.mjs","sources":["../../../projects/cmat/services/alert/alert.dialog.ts","../../../projects/cmat/services/alert/alert.message.ts","../../../projects/cmat/services/alert/enum.ts","../../../projects/cmat/services/alert/alert.service.ts","../../../projects/cmat/services/alert/cmat-services-alert.ts"],"sourcesContent":["import { CmatDialogType } from './enum';\r\n\r\nexport class CmatAlertDialog {\r\n constructor(public message: string, public type: CmatDialogType, public okCallback?: (val?: unknown) => void, public cancelCallback?: () => void,\r\n public defaultValue?: string, public okLabel?: string, public cancelLabel?: string) {\r\n\r\n }\r\n}","import { CmatMessageSeverity } from './enum';\r\n\r\nexport class CmatAlertMessage {\r\n constructor(public severity: CmatMessageSeverity, public summary: string, public detail: string, public isPostionBottom: boolean = false) { }\r\n}\r\n","export enum CmatDialogType {\r\n alert,\r\n confirm,\r\n prompt\r\n}\r\n\r\nexport enum CmatMessageSeverity {\r\n info = 'info',\r\n success = 'success',\r\n error = 'error',\r\n warning = 'warning',\r\n wait = 'wait'\r\n}\r\n\r\nexport interface ApiResult {\r\n success: boolean;\r\n msg: string;\r\n type: number;\r\n data?: unknown;\r\n dataExt?: unknown;\r\n}","import { HttpResponseBase } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { CmatAlertDialog } from './alert.dialog';\r\nimport { CmatAlertMessage } from './alert.message';\r\nimport { ApiResult, CmatDialogType, CmatMessageSeverity } from './enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatAlertService {\r\n private _messages = new Subject<CmatAlertMessage>();\r\n private _stickyMessages = new Subject<CmatAlertMessage | void>();\r\n private _dialogs = new Subject<CmatAlertDialog>();\r\n\r\n private _isLoading = new Subject<boolean>();\r\n private _loadingMessageId: ReturnType<typeof setTimeout> | null = null;\r\n\r\n get dialogEvent$(): Observable<CmatAlertDialog> {\r\n return this._dialogs.asObservable();\r\n }\r\n\r\n\r\n get messageEvent$(): Observable<CmatAlertMessage> {\r\n return this._messages.asObservable();\r\n }\r\n\r\n get stickyMessageEvent$(): Observable<CmatAlertMessage | void> {\r\n return this._stickyMessages.asObservable();\r\n }\r\n\r\n get isLoadingInProgress$(): Observable<boolean> {\r\n return this._isLoading.asObservable();\r\n }\r\n\r\n showDialog(message: string, type?: CmatDialogType, okCallback?: (val?: unknown) => void, cancelCallback?: () => void,\r\n okLabel?: string, cancelLabel?: string, defaultValue?: string): void {\r\n\r\n type ??= CmatDialogType.alert;\r\n\r\n this._dialogs.next({\r\n message: message,\r\n type: type,\r\n okCallback: okCallback,\r\n cancelCallback: cancelCallback,\r\n okLabel: okLabel,\r\n cancelLabel: cancelLabel,\r\n defaultValue: defaultValue\r\n });\r\n }\r\n\r\n showMessage(summary: string): void;\r\n showMessage(detail: string | string[] | HttpResponseBase, params: string, severity: CmatMessageSeverity): void;\r\n showMessage(data: string | string[] | HttpResponseBase, separatorOrDetail?: string, severity?: CmatMessageSeverity): void {\r\n severity ??= CmatMessageSeverity.info;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = CmatUtilsService.getHttpResponseMessage(data);\r\n separatorOrDetail = CmatUtilsService.captionAndMessageSeparator;\r\n }\r\n\r\n if (data instanceof Array) {\r\n for (const message of data) {\r\n const msgObject = CmatUtilsService.splitInTwo(message, separatorOrDetail);\r\n\r\n this._showMessageHelper(msgObject.firstPart, msgObject.secondPart ?? '', severity, false);\r\n }\r\n } else {\r\n this._showMessageHelper(data, separatorOrDetail ?? '', severity, false);\r\n }\r\n }\r\n\r\n showBottomMessage(summary: string): void;\r\n showBottomMessage(summary: string, detail: string, severity: CmatMessageSeverity): void;\r\n showBottomMessage(data: string | string[] | HttpResponseBase, separatorOrDetail?: string, severity?: CmatMessageSeverity): void {\r\n severity ??= CmatMessageSeverity.info;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = CmatUtilsService.getHttpResponseMessage(data);\r\n separatorOrDetail = CmatUtilsService.captionAndMessageSeparator;\r\n }\r\n\r\n if (data instanceof Array) {\r\n for (const message of data) {\r\n const msgObject = CmatUtilsService.splitInTwo(message, separatorOrDetail);\r\n\r\n this._showMessageHelper(msgObject.firstPart, msgObject.secondPart ?? '', severity, true, true);\r\n }\r\n } else {\r\n this._showMessageHelper(data, separatorOrDetail ?? '', severity, true, true);\r\n }\r\n }\r\n\r\n\r\n showStickyMessage(summary: string): void;\r\n showStickyMessage(summary: string, detail: string, severity: CmatMessageSeverity, error?: unknown): void;\r\n showStickyMessage(detail: string[] | HttpResponseBase, params: string, severity: CmatMessageSeverity): void;\r\n showStickyMessage(data: string | string[] | HttpResponseBase, separatorOrDetail?: string, severity?: CmatMessageSeverity, error?: unknown): void {\r\n\r\n severity ??= CmatMessageSeverity.info;\r\n\r\n if (data instanceof HttpResponseBase) {\r\n data = CmatUtilsService.getHttpResponseMessage(data);\r\n separatorOrDetail = CmatUtilsService.captionAndMessageSeparator;\r\n }\r\n\r\n\r\n if (data instanceof Array) {\r\n for (const message of data) {\r\n const msgObject = CmatUtilsService.splitInTwo(message, separatorOrDetail); this._showMessageHelper(msgObject.firstPart, msgObject.secondPart ?? '', severity, true);\r\n }\r\n } else {\r\n if (error) {\r\n if (this.isApiResult(error)) {\r\n separatorOrDetail += error.msg;\r\n }\r\n\r\n const serializedError = CmatUtilsService.safeStringify(error as Record<string, unknown>);\r\n const msg = `Message.Severity: \"${CmatMessageSeverity[severity]}\", Message.Summary: \"${data}\", \r\n Message.Detail: \"${separatorOrDetail}\", Message.Error: \"${serializedError}\"`;\r\n\r\n switch (severity) {\r\n case CmatMessageSeverity.info:\r\n this.logInfo(msg);\r\n break;\r\n case CmatMessageSeverity.success:\r\n this.logMessage(msg);\r\n break;\r\n case CmatMessageSeverity.error:\r\n this.logError(msg);\r\n break;\r\n case CmatMessageSeverity.warning:\r\n this.logWarning(msg);\r\n break;\r\n case CmatMessageSeverity.wait:\r\n this.logTrace(msg);\r\n break;\r\n }\r\n }\r\n\r\n this._showMessageHelper(data, separatorOrDetail ?? '', severity, true);\r\n }\r\n }\r\n\r\n startLoadingMessage(message = '载入中...', caption = ''): void {\r\n this._isLoading.next(true);\r\n this._clearLoadingMessageTimer();\r\n\r\n this._loadingMessageId = setTimeout((): void => {\r\n this.showStickyMessage(caption, message, CmatMessageSeverity.wait);\r\n }, 1000);\r\n }\r\n\r\n stopLoadingMessage(): void {\r\n this._isLoading.next(false);\r\n this._clearLoadingMessageTimer();\r\n this.resetStickyMessage();\r\n }\r\n\r\n\r\n logDebug(msg: unknown): void {\r\n console.debug(msg);\r\n }\r\n\r\n logError(msg: unknown): void {\r\n console.error(msg);\r\n }\r\n\r\n logInfo(msg: unknown): void {\r\n console.info(msg);\r\n }\r\n\r\n logMessage(msg: unknown): void {\r\n console.log(msg);\r\n }\r\n\r\n logTrace(msg: unknown): void {\r\n console.trace(msg);\r\n }\r\n\r\n logWarning(msg: unknown): void {\r\n console.warn(msg);\r\n }\r\n\r\n resetStickyMessage(): void {\r\n this._stickyMessages.next(void 0);\r\n }\r\n\r\n private _showMessageHelper(summary: string, detail: string, severity: CmatMessageSeverity, isSticky: boolean, isPostionBottom: boolean = false): void {\r\n\r\n if (isSticky) {\r\n this._stickyMessages.next({ severity: severity, summary: summary, detail: detail, isPostionBottom: isPostionBottom });\r\n } else {\r\n this._messages.next({ severity: severity, summary: summary, detail: detail, isPostionBottom: isPostionBottom });\r\n }\r\n }\r\n\r\n private isApiResult(obj: unknown): obj is ApiResult {\r\n const result = obj as Partial<ApiResult> | null;\r\n\r\n return typeof result === 'object' && result !== null\r\n && typeof result.success === 'boolean'\r\n && typeof result.msg === 'string'\r\n && typeof result.type === 'number';\r\n }\r\n\r\n private _clearLoadingMessageTimer(): void {\r\n if (this._loadingMessageId !== null) {\r\n clearTimeout(this._loadingMessageId);\r\n this._loadingMessageId = null;\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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-services-data.mjs","sources":["../../../projects/cmat/services/data/data.service.ts","../../../projects/cmat/services/data/cmat-services-data.ts"],"sourcesContent":["import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CmatUrlStateConfigService, IUrlStateConfig } from 'cmat/services/config';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, map, retry } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatDataService {\r\n private readonly _http = inject(HttpClient);\r\n private readonly _urlStateConfigService = inject(CmatUrlStateConfigService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _enableDataProtect: boolean = false;\r\n\r\n constructor() {\r\n this._urlStateConfigService.config$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((config: IUrlStateConfig) => {\r\n this._enableDataProtect = config.enableDataProtect;\r\n });\r\n }\r\n\r\n get<T>(url: string, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestHeaders() : CmatUtilsService.getRequestCryptoHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n return this._http.get<string>(url, { ...options, headers: headers })\r\n .pipe(\r\n retry({ count: 3, delay: 1000 }),\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n } else {\r\n return this._http.get<T>(url, { ...options, headers: headers })\r\n .pipe(\r\n retry({ count: 3, delay: 1000 }),\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n\r\n }\r\n\r\n post<T>(url: string, data: any, params: Record<string, unknown> = {}, auth: boolean = true, idempotent: boolean = false): Observable<T> {\r\n const headers = auth ? (idempotent ? CmatUtilsService.getRequestIdempotentBypassHeaders() : CmatUtilsService.getRequestBypassHeaders()) : (idempotent ? CmatUtilsService.getRequestCryptoIdempotentBypassHeaders('') : CmatUtilsService.getRequestCryptoBypassHeaders(''));\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n data = CmatUtilsService.getEncryptData(JSON.stringify(data));\r\n\r\n return this._http.post<string>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n } else {\r\n return this._http.post<T>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n }\r\n\r\n put<T>(url: string, data: any, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestBypassHeaders() : CmatUtilsService.getRequestCryptoBypassHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n data = CmatUtilsService.getEncryptData(JSON.stringify(data));\r\n\r\n return this._http.put<string>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n } else {\r\n return this._http.put<T>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n }\r\n\r\n delete<T>(url: string, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestBypassHeaders() : CmatUtilsService.getRequestCryptoBypassHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n return this._http.delete<T>(url, {\r\n ...options,\r\n headers: headers\r\n })\r\n .pipe(\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n\r\n patch<T>(url: string, data: any, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestBypassHeaders() : CmatUtilsService.getRequestCryptoBypassHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n data = CmatUtilsService.getEncryptData(JSON.stringify(data));\r\n\r\n return this._http.patch<string>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n } else {\r\n return this._http.patch<T>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n catchError((err: any) => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n }\r\n\r\n private _buildHttpParams(params: Record<string, unknown>, encrypted: boolean): HttpParams {\r\n if (Object.keys(params).length === 0) {\r\n return new HttpParams();\r\n }\r\n\r\n if (encrypted) {\r\n return new HttpParams().set('params', CmatUtilsService.getEncryptData(JSON.stringify(params)));\r\n }\r\n\r\n const normalizedParams: Record<string, string> = {};\r\n\r\n Object.entries(params).forEach(([key, value]) => {\r\n const normalizedValue = this._normalizeParamValue(value);\r\n\r\n if (normalizedValue !== undefined) {\r\n normalizedParams[key] = normalizedValue;\r\n }\r\n });\r\n\r\n return new HttpParams({ fromObject: normalizedParams });\r\n }\r\n\r\n private _decryptResponse<T>(res: string): T | string {\r\n if (!res) {\r\n return res;\r\n }\r\n\r\n return JSON.parse(CmatUtilsService.getDecryptData(res));\r\n }\r\n\r\n private _normalizeParamValue(value: unknown): string | undefined {\r\n if (value === null || value === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\r\n return `${value}`;\r\n }\r\n\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n\r\n return JSON.stringify(value);\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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"}
|
|
1
|
+
{"version":3,"file":"cmat-services-data.mjs","sources":["../../../projects/cmat/services/data/data.service.ts","../../../projects/cmat/services/data/cmat-services-data.ts"],"sourcesContent":["import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CmatUrlStateConfigService, IUrlStateConfig } from 'cmat/services/config';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, map, retry } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatDataService {\r\n private readonly _http = inject(HttpClient);\r\n private readonly _urlStateConfigService = inject(CmatUrlStateConfigService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _enableDataProtect: boolean = false;\r\n\r\n constructor() {\r\n this._urlStateConfigService.config$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((config: IUrlStateConfig) => {\r\n this._enableDataProtect = config.enableDataProtect;\r\n });\r\n }\r\n\r\n get<T>(url: string, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestHeaders() : CmatUtilsService.getRequestCryptoHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n return this._http.get<string>(url, { ...options, headers: headers })\r\n .pipe(\r\n retry({ count: 3, delay: 1000 }),\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n } else {\r\n return this._http.get<T>(url, { ...options, headers: headers })\r\n .pipe(\r\n retry({ count: 3, delay: 1000 }),\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n }\r\n\r\n }\r\n\r\n post<T>(url: string, data: unknown, params: Record<string, unknown> = {}, auth: boolean = true, idempotent: boolean = false): Observable<T> {\r\n const headers = auth ? (idempotent ? CmatUtilsService.getRequestIdempotentBypassHeaders() : CmatUtilsService.getRequestBypassHeaders()) : (idempotent ? CmatUtilsService.getRequestCryptoIdempotentBypassHeaders('') : CmatUtilsService.getRequestCryptoBypassHeaders(''));\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n data = CmatUtilsService.getEncryptData(JSON.stringify(data));\r\n\r\n return this._http.post<string>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n } else {\r\n return this._http.post<T>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n }\r\n }\r\n\r\n put<T>(url: string, data: unknown, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestBypassHeaders() : CmatUtilsService.getRequestCryptoBypassHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n data = CmatUtilsService.getEncryptData(JSON.stringify(data));\r\n\r\n return this._http.put<string>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n } else {\r\n return this._http.put<T>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n }\r\n }\r\n\r\n delete<T>(url: string, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestBypassHeaders() : CmatUtilsService.getRequestCryptoBypassHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n return this._http.delete<T>(url, {\r\n ...options,\r\n headers: headers\r\n })\r\n .pipe(\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n }\r\n\r\n patch<T>(url: string, data: unknown, params: Record<string, unknown> = {}, auth: boolean = true): Observable<T> {\r\n const headers = auth ? CmatUtilsService.getRequestBypassHeaders() : CmatUtilsService.getRequestCryptoBypassHeaders('');\r\n const options = { params: this._buildHttpParams(params, this._enableDataProtect) };\r\n\r\n if (this._enableDataProtect) {\r\n data = CmatUtilsService.getEncryptData(JSON.stringify(data));\r\n\r\n return this._http.patch<string>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n map((res: string) => this._decryptResponse<T>(res) as T),\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n } else {\r\n return this._http.patch<T>(url, data, { ...options, headers: headers })\r\n .pipe(\r\n catchError((err: unknown) => CmatUtilsService.handleError(err as ErrorEvent | HttpErrorResponse))\r\n );\r\n }\r\n }\r\n\r\n private _buildHttpParams(params: Record<string, unknown>, encrypted: boolean): HttpParams {\r\n if (Object.keys(params).length === 0) {\r\n return new HttpParams();\r\n }\r\n\r\n if (encrypted) {\r\n return new HttpParams().set('params', CmatUtilsService.getEncryptData(JSON.stringify(params)));\r\n }\r\n\r\n const normalizedParams: Record<string, string> = {};\r\n\r\n Object.entries(params).forEach(([key, value]) => {\r\n const normalizedValue = this._normalizeParamValue(value);\r\n\r\n if (normalizedValue !== undefined) {\r\n normalizedParams[key] = normalizedValue;\r\n }\r\n });\r\n\r\n return new HttpParams({ fromObject: normalizedParams });\r\n }\r\n\r\n private _decryptResponse<T>(res: string): T | string {\r\n if (!res) {\r\n return res;\r\n }\r\n\r\n return JSON.parse(CmatUtilsService.getDecryptData(res)) as T;\r\n }\r\n\r\n private _normalizeParamValue(value: unknown): string | undefined {\r\n if (value === null || value === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\r\n return `${value}`;\r\n }\r\n\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n\r\n return JSON.stringify(value);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAWa,eAAe,CAAA;AAOxB,IAAA,WAAA,GAAA;AANiB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAEzC,IAAA,CAAA,kBAAkB,GAAY,KAAK;QAGvC,IAAI,CAAC,sBAAsB,CAAC;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,MAAuB,KAAI;AACnC,YAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,iBAAiB;AACtD,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,GAAG,CAAI,GAAW,EAAE,SAAkC,EAAE,EAAE,OAAgB,IAAI,EAAA;AAC1E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,EAAE,CAAC;AAC1G,QAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAElF,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;iBAC9D,IAAI,CACD,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAChC,GAAG,CAAC,CAAC,GAAW,KAAK,IAAI,CAAC,gBAAgB,CAAI,GAAG,CAAM,CAAC,EACxD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AACzD,iBAAA,IAAI,CACD,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAChC,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;IAEJ;AAEA,IAAA,IAAI,CAAI,GAAW,EAAE,IAAa,EAAE,MAAA,GAAkC,EAAE,EAAE,IAAA,GAAgB,IAAI,EAAE,UAAA,GAAsB,KAAK,EAAA;QACvH,MAAM,OAAO,GAAG,IAAI,IAAI,UAAU,GAAG,gBAAgB,CAAC,iCAAiC,EAAE,GAAG,gBAAgB,CAAC,uBAAuB,EAAE,KAAK,UAAU,GAAG,gBAAgB,CAAC,uCAAuC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;AAC1Q,QAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAElF,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAE5D,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAS,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AACrE,iBAAA,IAAI,CACD,GAAG,CAAC,CAAC,GAAW,KAAK,IAAI,CAAC,gBAAgB,CAAI,GAAG,CAAM,CAAC,EACxD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AAChE,iBAAA,IAAI,CACD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;IACJ;IAEA,GAAG,CAAI,GAAW,EAAE,IAAa,EAAE,MAAA,GAAkC,EAAE,EAAE,IAAA,GAAgB,IAAI,EAAA;AACzF,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAAC,uBAAuB,EAAE,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,EAAE,CAAC;AACtH,QAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAElF,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAE5D,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AACpE,iBAAA,IAAI,CACD,GAAG,CAAC,CAAC,GAAW,KAAK,IAAI,CAAC,gBAAgB,CAAI,GAAG,CAAM,CAAC,EACxD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AAC/D,iBAAA,IAAI,CACD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;IACJ;AAEA,IAAA,MAAM,CAAI,GAAW,EAAE,SAAkC,EAAE,EAAE,OAAgB,IAAI,EAAA;AAC7E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAAC,uBAAuB,EAAE,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,EAAE,CAAC;AACtH,QAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAElF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAI,GAAG,EAAE;AAC7B,YAAA,GAAG,OAAO;AACV,YAAA,OAAO,EAAE;SACZ;AACI,aAAA,IAAI,CACD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;IACT;IAEA,KAAK,CAAI,GAAW,EAAE,IAAa,EAAE,MAAA,GAAkC,EAAE,EAAE,IAAA,GAAgB,IAAI,EAAA;AAC3F,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAAC,uBAAuB,EAAE,GAAG,gBAAgB,CAAC,6BAA6B,CAAC,EAAE,CAAC;AACtH,QAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAElF,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAE5D,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAS,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AACtE,iBAAA,IAAI,CACD,GAAG,CAAC,CAAC,GAAW,KAAK,IAAI,CAAC,gBAAgB,CAAI,GAAG,CAAM,CAAC,EACxD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AACjE,iBAAA,IAAI,CACD,UAAU,CAAC,CAAC,GAAY,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAqC,CAAC,CAAC,CACpG;QACT;IACJ;IAEQ,gBAAgB,CAAC,MAA+B,EAAE,SAAkB,EAAA;QACxE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,OAAO,IAAI,UAAU,EAAE;QAC3B;QAEA,IAAI,SAAS,EAAE;YACX,OAAO,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAClG;QAEA,MAAM,gBAAgB,GAA2B,EAAE;AAEnD,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAExD,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AAC/B,gBAAA,gBAAgB,CAAC,GAAG,CAAC,GAAG,eAAe;YAC3C;AACJ,QAAA,CAAC,CAAC;QAEF,OAAO,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC3D;AAEQ,IAAA,gBAAgB,CAAI,GAAW,EAAA;QACnC,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,OAAO,GAAG;QACd;QAEA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAM;IAChE;AAEQ,IAAA,oBAAoB,CAAC,KAAc,EAAA;QACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACvC,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YACtF,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE;QACrB;AAEA,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE;QAC9B;AAEA,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAChC;8GAzJS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,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,eAAe,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAET,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACVD;;AAEG;;;;"}
|
|
@@ -59,13 +59,13 @@ class CmatExportAsService {
|
|
|
59
59
|
_getCSV(config) {
|
|
60
60
|
return new Observable((observer) => {
|
|
61
61
|
const element = document.getElementById(config.elementIdOrContent);
|
|
62
|
-
|
|
62
|
+
const csv = [];
|
|
63
63
|
const rows = element?.querySelectorAll('table tr');
|
|
64
|
-
rows
|
|
65
|
-
|
|
64
|
+
rows?.forEach((rowElement) => {
|
|
65
|
+
const row = [];
|
|
66
66
|
const cols = rowElement.querySelectorAll('td, th');
|
|
67
|
-
cols.
|
|
68
|
-
row.push('"' + col.innerText + '"');
|
|
67
|
+
Array.from(cols).forEach((col) => {
|
|
68
|
+
row.push('"' + (col.textContent ?? col.innerText) + '"');
|
|
69
69
|
});
|
|
70
70
|
csv.push(row.join(','));
|
|
71
71
|
});
|
|
@@ -108,17 +108,17 @@ class CmatExportAsService {
|
|
|
108
108
|
}
|
|
109
109
|
_getJSON(config) {
|
|
110
110
|
return new Observable((observer) => {
|
|
111
|
-
const data = [];
|
|
111
|
+
const data = [];
|
|
112
112
|
const headers = [];
|
|
113
113
|
const table = document.getElementById(config.elementIdOrContent);
|
|
114
114
|
for (let index = 0; index < table.rows[0].cells.length; index++) {
|
|
115
|
-
headers[index] = table.rows[0].cells[index].
|
|
115
|
+
headers[index] = (table.rows[0].cells[index].textContent ?? '').toLowerCase().replace(/ /gi, '');
|
|
116
116
|
}
|
|
117
117
|
for (let i = 1; i < table.rows.length; i++) {
|
|
118
118
|
const tableRow = table.rows[i];
|
|
119
|
-
|
|
119
|
+
const rowData = {};
|
|
120
120
|
for (let j = 0; j < tableRow.cells.length; j++) {
|
|
121
|
-
rowData[headers[j]] = tableRow.cells[j].
|
|
121
|
+
rowData[headers[j]] = tableRow.cells[j].textContent ?? '';
|
|
122
122
|
}
|
|
123
123
|
data.push(rowData);
|
|
124
124
|
}
|
|
@@ -163,7 +163,8 @@ class CmatExportAsService {
|
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
165
|
_btoa(content) {
|
|
166
|
-
|
|
166
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
167
|
+
return btoa(unescape(encodeURIComponent(content)));
|
|
167
168
|
}
|
|
168
169
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatExportAsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
169
170
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatExportAsService, providedIn: 'root' }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-services-export-as.mjs","sources":["../../../projects/cmat/services/export-as/export-as.service.ts","../../../projects/cmat/services/export-as/cmat-services-export-as.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver-es';\r\nimport { Observable } from 'rxjs';\r\nimport * as XLSX from 'xlsx';\r\nimport { ExportAsConfig } from './export-as-config.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatExportAsService {\r\n \r\n get(config: ExportAsConfig): Observable<any> {\r\n switch (config.type.toUpperCase()) {\r\n case 'CSV':\r\n return this._getCSV(config);\r\n case 'TXT':\r\n return this._getTXT(config);\r\n case 'XLS':\r\n return this._getXLS(config);\r\n case 'XLSX':\r\n return this._getXLSX(config);\r\n case 'JSON':\r\n return this._getJSON(config);\r\n case 'XML':\r\n return this._getXML(config);\r\n default:\r\n return new Observable((observer) => { observer.error('导出格式不支持。'); });\r\n }\r\n }\r\n\r\n \r\n save(config: ExportAsConfig, fileName: string): Observable<string | null> {\r\n config.download = true;\r\n config.fileName = fileName + '.' + config.type;\r\n return this.get(config);\r\n }\r\n\r\n \r\n contentToBlob(content: string): Observable<Blob> {\r\n return new Observable((observer) => {\r\n const arr = content.split(','), mime = (/:(.*?);/.exec(arr[0]))?.[1],\r\n bstr = atob(arr[1]);\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n observer.next(new Blob([u8arr], { type: mime }));\r\n observer.complete();\r\n });\r\n }\r\n\r\n \r\n removeFileTypeFromBase64(fileContent: string): string {\r\n const re = /^data:[^]*;base64,/g;\r\n const newContent: string = re[Symbol.replace](fileContent, '');\r\n return newContent;\r\n }\r\n\r\n \r\n addFileTypeToBase64(fileContent: string, fileMime: string): string {\r\n return `data:${fileMime};base64,${fileContent}`;\r\n }\r\n\r\n downloadFromDataURL(fileName: string, dataURL: string): void {\r\n this.contentToBlob(dataURL).subscribe((blob) => {\r\n this.downloadFromBlob(blob, fileName);\r\n });\r\n }\r\n\r\n downloadFromBlob(blob: Blob, fileName: string): void {\r\n FileSaver.saveAs(blob, fileName);\r\n }\r\n\r\n private _getCSV(config: ExportAsConfig): Observable<string | null> {\r\n return new Observable((observer) => {\r\n const element: HTMLElement | null = document.getElementById(config.elementIdOrContent);\r\n let csv: string[] = [];\r\n const rows: any = element?.querySelectorAll('table tr');\r\n rows.forEach((rowElement: { querySelectorAll: (arg0: string) => any; }) => {\r\n let row: string[] = [];\r\n const cols = rowElement.querySelectorAll('td, th');\r\n\r\n cols.array.forEach((col: { innerText: string; }) => {\r\n row.push('\"' + col.innerText + '\"');\r\n });\r\n csv.push(row.join(','));\r\n });\r\n\r\n const csvContent = 'data:text/csv;base64,' + this._btoa(csv.join('\\n'));\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, csvContent);\r\n observer.next(null);\r\n } else {\r\n observer.next(csvContent);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _getTXT(config: ExportAsConfig): Observable<string | null> {\r\n const nameFrags = config.fileName?.split('.');\r\n config.fileName = `${nameFrags?.[0]}.txt`;\r\n return this._getCSV(config);\r\n }\r\n\r\n private _getXLS(config: ExportAsConfig): Observable<string | null> {\r\n return new Observable((observer) => {\r\n const element: HTMLElement | null = document.getElementById(config.elementIdOrContent);\r\n const ws3 = XLSX.utils.table_to_sheet(element, config.options);\r\n const wb = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws3, config.fileName);\r\n const out = XLSX.write(wb, { type: 'base64' });\r\n const xlsContent = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + out;\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, xlsContent);\r\n observer.next(null);\r\n } else {\r\n observer.next(xlsContent);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _getXLSX(config: ExportAsConfig): Observable<string | null> {\r\n return this._getXLS(config);\r\n }\r\n\r\n\r\n private _getJSON(config: ExportAsConfig): Observable<any[] | null> {\r\n return new Observable((observer) => {\r\n const data = []; // first row needs fto be headers\r\n const headers = [];\r\n const table = document.getElementById(config.elementIdOrContent) as HTMLTableElement;\r\n for (let index = 0; index < table.rows[0].cells.length; index++) {\r\n headers[index] = table.rows[0].cells[index].innerHTML.toLowerCase().replace(/ /gi, '');\r\n }\r\n for (let i = 1; i < table.rows.length; i++) {\r\n const tableRow = table.rows[i];\r\n let rowData: Record<string, string> = {};\r\n for (let j = 0; j < tableRow.cells.length; j++) {\r\n rowData[headers[j]] = tableRow.cells[j].innerHTML;\r\n }\r\n data.push(rowData);\r\n }\r\n const jsonString = JSON.stringify(data);\r\n const jsonBase64 = this._btoa(jsonString);\r\n const dataStr = 'data:text/json;base64,' + jsonBase64;\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, dataStr);\r\n observer.next(null);\r\n } else {\r\n observer.next(data);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _getXML(config: ExportAsConfig): Observable<string | null> {\r\n return new Observable((observer) => {\r\n let xml = '<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root><Classes>';\r\n const tritem = document.getElementById(config.elementIdOrContent)?.getElementsByTagName('tr');\r\n\r\n if (tritem) {\r\n Array.from(tritem).forEach((celldata) => {\r\n if (celldata.cells.length > 0) {\r\n xml += '<Class name=\"' + celldata.cells[0].textContent + '\">\\n';\r\n for (let m = 1; m < celldata.cells.length; ++m) {\r\n xml += '\\t<data>' + celldata.cells[m].textContent + '</data>\\n';\r\n }\r\n xml += '</Class>\\n';\r\n }\r\n });\r\n\r\n }\r\n\r\n xml += '</Classes></Root>';\r\n const base64 = 'data:text/xml;base64,' + this._btoa(xml);\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, base64);\r\n observer.next(null);\r\n } else {\r\n observer.next(base64);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _btoa(content: string): string {\r\n return Buffer.from(content.toString(), 'utf-8').toString('base64')\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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"}
|
|
1
|
+
{"version":3,"file":"cmat-services-export-as.mjs","sources":["../../../projects/cmat/services/export-as/export-as.service.ts","../../../projects/cmat/services/export-as/cmat-services-export-as.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver-es';\r\nimport { Observable } from 'rxjs';\r\nimport * as XLSX from 'xlsx';\r\nimport { ExportAsConfig } from './export-as-config.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatExportAsService {\r\n \r\n get(config: ExportAsConfig): Observable<string | unknown[] | null> {\r\n switch (config.type.toUpperCase()) {\r\n case 'CSV':\r\n return this._getCSV(config);\r\n case 'TXT':\r\n return this._getTXT(config);\r\n case 'XLS':\r\n return this._getXLS(config);\r\n case 'XLSX':\r\n return this._getXLSX(config);\r\n case 'JSON':\r\n return this._getJSON(config);\r\n case 'XML':\r\n return this._getXML(config);\r\n default:\r\n return new Observable((observer): void => { observer.error('导出格式不支持。'); });\r\n }\r\n }\r\n\r\n \r\n save(config: ExportAsConfig, fileName: string): Observable<string | unknown[] | null> {\r\n config.download = true;\r\n config.fileName = fileName + '.' + config.type;\r\n return this.get(config);\r\n }\r\n\r\n \r\n contentToBlob(content: string): Observable<Blob> {\r\n return new Observable((observer): void => {\r\n const arr = content.split(','), mime = (/:(.*?);/.exec(arr[0]))?.[1],\r\n bstr = atob(arr[1]);\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n observer.next(new Blob([u8arr], { type: mime }));\r\n observer.complete();\r\n });\r\n }\r\n\r\n \r\n removeFileTypeFromBase64(fileContent: string): string {\r\n const re = /^data:[^]*;base64,/g;\r\n const newContent: string = re[Symbol.replace](fileContent, '');\r\n return newContent;\r\n }\r\n\r\n \r\n addFileTypeToBase64(fileContent: string, fileMime: string): string {\r\n return `data:${fileMime};base64,${fileContent}`;\r\n }\r\n\r\n downloadFromDataURL(fileName: string, dataURL: string): void {\r\n this.contentToBlob(dataURL).subscribe((blob): void => {\r\n this.downloadFromBlob(blob, fileName);\r\n });\r\n }\r\n\r\n downloadFromBlob(blob: Blob, fileName: string): void {\r\n FileSaver.saveAs(blob, fileName);\r\n }\r\n\r\n private _getCSV(config: ExportAsConfig): Observable<string | null> {\r\n return new Observable((observer): void => {\r\n const element: HTMLElement | null = document.getElementById(config.elementIdOrContent);\r\n const csv: string[] = [];\r\n const rows = element?.querySelectorAll('table tr');\r\n rows?.forEach((rowElement: Element): void => {\r\n const row: string[] = [];\r\n const cols = (rowElement as HTMLTableRowElement).querySelectorAll('td, th');\r\n\r\n Array.from(cols).forEach((col: Element): void => {\r\n row.push('\"' + ((col as HTMLTableCellElement).textContent ?? (col as HTMLTableCellElement).innerText) + '\"');\r\n });\r\n csv.push(row.join(','));\r\n });\r\n\r\n const csvContent = 'data:text/csv;base64,' + this._btoa(csv.join('\\n'));\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, csvContent);\r\n observer.next(null);\r\n } else {\r\n observer.next(csvContent);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _getTXT(config: ExportAsConfig): Observable<string | null> {\r\n const nameFrags = config.fileName?.split('.');\r\n config.fileName = `${nameFrags?.[0]}.txt`;\r\n return this._getCSV(config);\r\n }\r\n\r\n private _getXLS(config: ExportAsConfig): Observable<string | null> {\r\n return new Observable((observer): void => {\r\n const element = document.getElementById(config.elementIdOrContent) as HTMLTableElement | null;\r\n const ws3 = XLSX.utils.table_to_sheet(element, config.options);\r\n const wb = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws3, config.fileName);\r\n const out: string = XLSX.write(wb, { type: 'base64' }) as string;\r\n const xlsContent = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + out;\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, xlsContent);\r\n observer.next(null);\r\n } else {\r\n observer.next(xlsContent);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _getXLSX(config: ExportAsConfig): Observable<string | null> {\r\n return this._getXLS(config);\r\n }\r\n\r\n\r\n private _getJSON(config: ExportAsConfig): Observable<Record<string, string>[] | null> {\r\n return new Observable((observer): void => {\r\n const data: Record<string, string>[] = [];\r\n const headers: string[] = [];\r\n const table = document.getElementById(config.elementIdOrContent) as HTMLTableElement;\r\n for (let index = 0; index < table.rows[0].cells.length; index++) {\r\n headers[index] = (table.rows[0].cells[index].textContent ?? '').toLowerCase().replace(/ /gi, '');\r\n }\r\n for (let i = 1; i < table.rows.length; i++) {\r\n const tableRow = table.rows[i];\r\n const rowData: Record<string, string> = {};\r\n for (let j = 0; j < tableRow.cells.length; j++) {\r\n rowData[headers[j]] = tableRow.cells[j].textContent ?? '';\r\n }\r\n data.push(rowData);\r\n }\r\n const jsonString = JSON.stringify(data);\r\n const jsonBase64 = this._btoa(jsonString);\r\n const dataStr = 'data:text/json;base64,' + jsonBase64;\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, dataStr);\r\n observer.next(null);\r\n } else {\r\n observer.next(data);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _getXML(config: ExportAsConfig): Observable<string | null> {\r\n return new Observable((observer): void => {\r\n let xml = '<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root><Classes>';\r\n const tritem = document.getElementById(config.elementIdOrContent)?.getElementsByTagName('tr');\r\n\r\n if (tritem) {\r\n Array.from(tritem).forEach((celldata): void => {\r\n if (celldata.cells.length > 0) {\r\n xml += '<Class name=\"' + celldata.cells[0].textContent + '\">\\n';\r\n for (let m = 1; m < celldata.cells.length; ++m) {\r\n xml += '\\t<data>' + celldata.cells[m].textContent + '</data>\\n';\r\n }\r\n xml += '</Class>\\n';\r\n }\r\n });\r\n\r\n }\r\n\r\n xml += '</Classes></Root>';\r\n const base64 = 'data:text/xml;base64,' + this._btoa(xml);\r\n if (config.download) {\r\n this.downloadFromDataURL(config.fileName, base64);\r\n observer.next(null);\r\n } else {\r\n observer.next(base64);\r\n }\r\n observer.complete();\r\n });\r\n }\r\n\r\n private _btoa(content: string): string {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return btoa(unescape(encodeURIComponent(content)));\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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"}
|
|
@@ -2,14 +2,52 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
class CmatLocalStorageService {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
this._encryptionPrefix = '__enc__';
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
localStorage.
|
|
8
|
+
getItem(key, options) {
|
|
9
|
+
const raw = localStorage.getItem(key);
|
|
10
|
+
if (raw === null) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
let entry;
|
|
14
|
+
try {
|
|
15
|
+
entry = JSON.parse(raw);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return raw;
|
|
19
|
+
}
|
|
20
|
+
if (entry.expiry && Date.now() > entry.expiry) {
|
|
21
|
+
this.removeItem(key);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
let data = entry.data ?? raw;
|
|
25
|
+
if (options?.encrypt || key.startsWith(this._encryptionPrefix)) {
|
|
26
|
+
data = this._decrypt(data);
|
|
27
|
+
}
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
setItem(key, item, options) {
|
|
31
|
+
let data = item;
|
|
32
|
+
const storageKey = options?.encrypt ? this._encryptionPrefix + key : key;
|
|
33
|
+
if (options?.encrypt) {
|
|
34
|
+
data = this._encrypt(item);
|
|
35
|
+
}
|
|
36
|
+
const entry = {
|
|
37
|
+
data,
|
|
38
|
+
...(options?.ttl ? { expiry: Date.now() + options.ttl } : {})
|
|
39
|
+
};
|
|
40
|
+
localStorage.setItem(storageKey, JSON.stringify(entry));
|
|
10
41
|
}
|
|
11
42
|
removeItem(key) {
|
|
12
43
|
localStorage.removeItem(key);
|
|
44
|
+
localStorage.removeItem(this._encryptionPrefix + key);
|
|
45
|
+
}
|
|
46
|
+
_encrypt(value) {
|
|
47
|
+
return btoa(encodeURIComponent(value));
|
|
48
|
+
}
|
|
49
|
+
_decrypt(value) {
|
|
50
|
+
return decodeURIComponent(atob(value));
|
|
13
51
|
}
|
|
14
52
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
53
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatLocalStorageService, providedIn: 'root' }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-services-local-storage.mjs","sources":["../../../projects/cmat/services/local-storage/local-storage.service.ts","../../../projects/cmat/services/local-storage/cmat-services-local-storage.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatLocalStorageService {\r\n getItem(key: string): string | null {\r\n
|
|
1
|
+
{"version":3,"file":"cmat-services-local-storage.mjs","sources":["../../../projects/cmat/services/local-storage/local-storage.service.ts","../../../projects/cmat/services/local-storage/cmat-services-local-storage.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nexport interface StorageOptions {\r\n encrypt?: boolean;\r\n ttl?: number;\r\n}\r\n\r\ninterface StorageEntry {\r\n data: string;\r\n expiry?: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatLocalStorageService {\r\n private _encryptionPrefix = '__enc__';\r\n\r\n getItem(key: string, options?: StorageOptions): string | null {\r\n const raw = localStorage.getItem(key);\r\n if (raw === null) {\r\n return null;\r\n }\r\n\r\n let entry: StorageEntry;\r\n try {\r\n entry = JSON.parse(raw) as StorageEntry;\r\n } catch {\r\n return raw;\r\n }\r\n\r\n if (entry.expiry && Date.now() > entry.expiry) {\r\n this.removeItem(key);\r\n return null;\r\n }\r\n\r\n let data = entry.data ?? raw;\r\n\r\n if (options?.encrypt || key.startsWith(this._encryptionPrefix)) {\r\n data = this._decrypt(data);\r\n }\r\n\r\n return data;\r\n }\r\n\r\n setItem(key: string, item: string, options?: StorageOptions): void {\r\n let data = item;\r\n const storageKey = options?.encrypt ? this._encryptionPrefix + key : key;\r\n\r\n if (options?.encrypt) {\r\n data = this._encrypt(item);\r\n }\r\n\r\n const entry: StorageEntry = {\r\n data,\r\n ...(options?.ttl ? { expiry: Date.now() + options.ttl } : {})\r\n };\r\n\r\n localStorage.setItem(storageKey, JSON.stringify(entry));\r\n }\r\n\r\n removeItem(key: string): void {\r\n localStorage.removeItem(key);\r\n localStorage.removeItem(this._encryptionPrefix + key);\r\n }\r\n\r\n private _encrypt(value: string): string {\r\n return btoa(encodeURIComponent(value));\r\n }\r\n\r\n private _decrypt(value: string): string {\r\n return decodeURIComponent(atob(value));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAea,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;QAIY,IAAA,CAAA,iBAAiB,GAAG,SAAS;AAyDxC,IAAA;IAvDG,OAAO,CAAC,GAAW,EAAE,OAAwB,EAAA;QACzC,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACd,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAI,KAAmB;AACvB,QAAA,IAAI;AACA,YAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB;QAC3C;AAAE,QAAA,MAAM;AACJ,YAAA,OAAO,GAAG;QACd;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACpB,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG;AAE5B,QAAA,IAAI,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAC5D,YAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9B;AAEA,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,OAAO,CAAC,GAAW,EAAE,IAAY,EAAE,OAAwB,EAAA;QACvD,IAAI,IAAI,GAAG,IAAI;AACf,QAAA,MAAM,UAAU,GAAG,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,GAAG,GAAG,GAAG;AAExE,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE;AAClB,YAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9B;AAEA,QAAA,MAAM,KAAK,GAAiB;YACxB,IAAI;YACJ,IAAI,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;SAC/D;AAED,QAAA,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3D;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AAClB,QAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5B,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;IACzD;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C;8GAzDS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,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,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACdD;;AAEG;;;;"}
|
|
@@ -18,11 +18,11 @@ class CmatTitleService {
|
|
|
18
18
|
return route;
|
|
19
19
|
}), mergeMap(route => route.data))
|
|
20
20
|
.subscribe((data) => {
|
|
21
|
-
let title = data['title'];
|
|
21
|
+
let title = typeof data['title'] === 'string' ? data['title'] : '';
|
|
22
22
|
if (title) {
|
|
23
23
|
const fragment = this._router.url.split('#')[1];
|
|
24
24
|
if (fragment) {
|
|
25
|
-
title +=
|
|
25
|
+
title += ` | ${CmatUtilsService.toTitleCase(fragment)}`;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
if (title) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-services-title.mjs","sources":["../../../projects/cmat/services/title/title.service.ts","../../../projects/cmat/services/title/cmat-services-title.ts"],"sourcesContent":["import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { filter, map, mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTitleService {\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private readonly _router = inject(Router);\r\n private readonly _titleService = inject(Title);\r\n\r\n constructor() {\r\n this._router.events.pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntilDestroyed(this._destroyRef),\r\n map(() => this._router.routerState.root),\r\n map((route) => {\r\n while (route.firstChild) {\r\n route = route.firstChild;\r\n }\r\n\r\n return route;\r\n }),\r\n mergeMap(route => route.data))\r\n .subscribe((data: Record<string,
|
|
1
|
+
{"version":3,"file":"cmat-services-title.mjs","sources":["../../../projects/cmat/services/title/title.service.ts","../../../projects/cmat/services/title/cmat-services-title.ts"],"sourcesContent":["import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { filter, map, mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTitleService {\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private readonly _router = inject(Router);\r\n private readonly _titleService = inject(Title);\r\n\r\n constructor() {\r\n this._router.events.pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntilDestroyed(this._destroyRef),\r\n map(() => this._router.routerState.root),\r\n map((route) => {\r\n while (route.firstChild) {\r\n route = route.firstChild;\r\n }\r\n\r\n return route;\r\n }),\r\n mergeMap(route => route.data))\r\n .subscribe((data: Record<string, unknown>) => {\r\n let title = typeof data['title'] === 'string' ? data['title'] : '';\r\n\r\n if (title) {\r\n const fragment = this._router.url.split('#')[1];\r\n\r\n if (fragment) {\r\n title += ` | ${CmatUtilsService.toTitleCase(fragment)}`;\r\n }\r\n }\r\n\r\n if (title) {\r\n this._titleService.setTitle(title);\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":";;;;;;;;MAUa,gBAAgB,CAAA;AAKzB,IAAA,WAAA,GAAA;AAJiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;QAG1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CACpB,MAAM,CAAC,CAAC,KAAK,KAA6B,KAAK,YAAY,aAAa,CAAC,EACzE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EACxC,GAAG,CAAC,CAAC,KAAK,KAAI;AACV,YAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACrB,gBAAA,KAAK,GAAG,KAAK,CAAC,UAAU;YAC5B;AAEA,YAAA,OAAO,KAAK;AAChB,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;AAC5B,aAAA,SAAS,CAAC,CAAC,IAA6B,KAAI;YACzC,IAAI,KAAK,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAElE,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE/C,IAAI,QAAQ,EAAE;oBACV,KAAK,IAAI,MAAM,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA,CAAE;gBAC3D;YACJ;YAEA,IAAI,KAAK,EAAE;AACP,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtC;AACJ,QAAA,CAAC,CAAC;IACV;8GAjCS,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;;;ACTD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-services-translation.mjs","sources":["../../../projects/cmat/services/translation/translation.service.ts","../../../projects/cmat/services/translation/cmat-services-translation.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\r\nimport { Language, TranslateService } from '@ngx-translate/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTranslationService {\r\n private _translate = inject(TranslateService);\r\n\r\n private readonly _defaultLanguage = 'zh';\r\n\r\n private _onLanguageChanged = new Subject<Language>();\r\n\r\n constructor() {\r\n this.setDefaultLanguage(this._defaultLanguage);\r\n }\r\n\r\n get languageChanged$(): Observable<Language> {\r\n return this._onLanguageChanged.asObservable();\r\n }\r\n\r\n addLanguages(lang: Language[]): void {\r\n this._translate.addLangs(lang);\r\n }\r\n\r\n setDefaultLanguage(lang: Language): void {\r\n this._translate.setFallbackLang(lang);\r\n }\r\n\r\n getDefaultLanguage(): Language {\r\n return this._translate.getFallbackLang() ?? 'zh';\r\n }\r\n\r\n getBrowserLanguage(): Language | void {\r\n return this._translate.getBrowserLang();\r\n }\r\n\r\n\r\n useBrowserLanguage(): Language | void {\r\n const browserLang = this.getBrowserLanguage();\r\n\r\n if (browserLang && (/en|zh/.exec(browserLang))) {\r\n this.changeLanguage(browserLang);\r\n return browserLang;\r\n }\r\n return browserLang;\r\n }\r\n\r\n changeLanguage(language: Language = 'zh'): Language {\r\n if (!language) {\r\n language = this.getDefaultLanguage();\r\n }\r\n\r\n if (language !== this._translate.getCurrentLang()) {\r\n setTimeout(() => {\r\n this._translate.use(language);\r\n this._onLanguageChanged.next(language);\r\n });\r\n }\r\n return language;\r\n }\r\n\r\n\r\n getTranslation(key: string | string[], interpolateParams?: object):
|
|
1
|
+
{"version":3,"file":"cmat-services-translation.mjs","sources":["../../../projects/cmat/services/translation/translation.service.ts","../../../projects/cmat/services/translation/cmat-services-translation.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\r\nimport { Language, TranslateService, Translation } from '@ngx-translate/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTranslationService {\r\n private _translate = inject(TranslateService);\r\n\r\n private readonly _defaultLanguage = 'zh';\r\n\r\n private _onLanguageChanged = new Subject<Language>();\r\n\r\n constructor() {\r\n this.setDefaultLanguage(this._defaultLanguage);\r\n }\r\n\r\n get languageChanged$(): Observable<Language> {\r\n return this._onLanguageChanged.asObservable();\r\n }\r\n\r\n addLanguages(lang: Language[]): void {\r\n this._translate.addLangs(lang);\r\n }\r\n\r\n setDefaultLanguage(lang: Language): void {\r\n this._translate.setFallbackLang(lang);\r\n }\r\n\r\n getDefaultLanguage(): Language {\r\n return this._translate.getFallbackLang() ?? 'zh';\r\n }\r\n\r\n getBrowserLanguage(): Language | void {\r\n return this._translate.getBrowserLang();\r\n }\r\n\r\n\r\n useBrowserLanguage(): Language | void {\r\n const browserLang = this.getBrowserLanguage();\r\n\r\n if (browserLang && (/en|zh/.exec(browserLang))) {\r\n this.changeLanguage(browserLang);\r\n return browserLang;\r\n }\r\n return browserLang;\r\n }\r\n\r\n changeLanguage(language: Language = 'zh'): Language {\r\n if (!language) {\r\n language = this.getDefaultLanguage();\r\n }\r\n\r\n if (language !== this._translate.getCurrentLang()) {\r\n setTimeout(() => {\r\n this._translate.use(language);\r\n this._onLanguageChanged.next(language);\r\n });\r\n }\r\n return language;\r\n }\r\n\r\n\r\n getTranslation(key: string | string[], interpolateParams?: object): string {\r\n return this._translate.instant(key, interpolateParams) as string;\r\n }\r\n\r\n\r\n getTranslationAsync(key: string | string[], interpolateParams?: object): Observable<Translation> {\r\n return this._translate.get(key, interpolateParams);\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAOa,sBAAsB,CAAA;AAO/B,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAE5B,IAAA,CAAA,gBAAgB,GAAG,IAAI;AAEhC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAY;AAGhD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAClD;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IACjD;AAEA,IAAA,YAAY,CAAC,IAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,kBAAkB,CAAC,IAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC;IACzC;IAEA,kBAAkB,GAAA;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,IAAI;IACpD;IAEA,kBAAkB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;IAC3C;IAGA,kBAAkB,GAAA;AACd,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAE7C,IAAI,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAChC,YAAA,OAAO,WAAW;QACtB;AACA,QAAA,OAAO,WAAW;IACtB;IAEA,cAAc,CAAC,WAAqB,IAAI,EAAA;QACpC,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACxC;QAEA,IAAI,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE;YAC/C,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1C,YAAA,CAAC,CAAC;QACN;AACA,QAAA,OAAO,QAAQ;IACnB;IAGA,cAAc,CAAC,GAAsB,EAAE,iBAA0B,EAAA;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAW;IACpE;IAGA,mBAAmB,CAAC,GAAsB,EAAE,iBAA0B,EAAA;QAClE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC;IACtD;8GAhES,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAET,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACND;;AAEG;;;;"}
|