@yuuvis/client-core 2.0.0-beta.0 → 2.0.0-beta.10
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/yuuvis-client-core.mjs +773 -645
- package/fesm2022/yuuvis-client-core.mjs.map +1 -1
- package/index.d.ts +7 -4
- package/lib/model/object-flavor.interface.d.ts +4 -1
- package/lib/provide.client.core.d.ts +58 -0
- package/lib/service/backend/backend.service.d.ts +0 -1
- package/lib/service/config/config.service.d.ts +0 -8
- package/lib/service/core-init/core-init.service.d.ts +1 -7
- package/lib/service/core-init/translate-json-loader.d.ts +1 -1
- package/lib/service/dms/dms.service.d.ts +2 -1
- package/lib/service/object-config/object-config.interface.d.ts +1 -1
- package/lib/service/object-form/object-form-translate.service.d.ts +15 -0
- package/lib/service/{system → object-form}/object-form.interface.d.ts +2 -2
- package/lib/service/object-form/object-form.model.d.ts +45 -0
- package/lib/service/system/system.interface.d.ts +1 -1
- package/lib/service/system/system.service.d.ts +1 -1
- package/lib/service/toast/toast.interface.d.ts +8 -0
- package/lib/service/toast/toast.service.d.ts +17 -0
- package/lib/service/toast/toast.styles.d.ts +1 -0
- package/lib/service/upload/upload.interface.d.ts +1 -1
- package/lib/service/user/user.providers.d.ts +4 -0
- package/lib/service/user/user.service.d.ts +2 -4
- package/package.json +7 -11
- package/esm2022/index.mjs +0 -69
- package/esm2022/lib/client-core.module.mjs +0 -117
- package/esm2022/lib/client-core.shared.module.mjs +0 -18
- package/esm2022/lib/common/pipes/filesize.pipe.mjs +0 -37
- package/esm2022/lib/common/pipes/index.mjs +0 -6
- package/esm2022/lib/common/pipes/keys.pipe.mjs +0 -17
- package/esm2022/lib/common/pipes/locale-date.pipe.mjs +0 -45
- package/esm2022/lib/common/pipes/locale-number.pipe.mjs +0 -115
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +0 -44
- package/esm2022/lib/common/services/native-notifications.interface.mjs +0 -2
- package/esm2022/lib/common/services/native-notifications.mjs +0 -40
- package/esm2022/lib/model/dms-object.interface.mjs +0 -2
- package/esm2022/lib/model/dms-object.model.mjs +0 -79
- package/esm2022/lib/model/object-flavor.interface.mjs +0 -2
- package/esm2022/lib/model/range-value.interface.mjs +0 -2
- package/esm2022/lib/model/yuv-error.model.mjs +0 -37
- package/esm2022/lib/model/yuv-user.model.mjs +0 -38
- package/esm2022/lib/service/audit/audit.interface.mjs +0 -2
- package/esm2022/lib/service/audit/audit.service.mjs +0 -135
- package/esm2022/lib/service/auth/auth.interceptor.mjs +0 -50
- package/esm2022/lib/service/auth/auth.interface.mjs +0 -7
- package/esm2022/lib/service/auth/auth.service.mjs +0 -130
- package/esm2022/lib/service/auth/oidc.service.mjs +0 -81
- package/esm2022/lib/service/backend/api.enum.mjs +0 -11
- package/esm2022/lib/service/backend/backend.interface.mjs +0 -2
- package/esm2022/lib/service/backend/backend.service.mjs +0 -206
- package/esm2022/lib/service/bpm/bpm.interface.mjs +0 -8
- package/esm2022/lib/service/bpm/bpm.service.mjs +0 -51
- package/esm2022/lib/service/cache/app-cache.service.mjs +0 -51
- package/esm2022/lib/service/catalog/catalog.interface.mjs +0 -2
- package/esm2022/lib/service/catalog/catalog.service.mjs +0 -13
- package/esm2022/lib/service/clipboard/clipboard.interface.mjs +0 -2
- package/esm2022/lib/service/clipboard/clipboard.service.mjs +0 -99
- package/esm2022/lib/service/config/config.interface.mjs +0 -6
- package/esm2022/lib/service/config/config.service.mjs +0 -115
- package/esm2022/lib/service/config/core-config.mjs +0 -20
- package/esm2022/lib/service/config/core-config.tokens.mjs +0 -9
- package/esm2022/lib/service/connection/connection.service.mjs +0 -36
- package/esm2022/lib/service/connection/offline.interceptor.mjs +0 -28
- package/esm2022/lib/service/core-init/core-init.service.mjs +0 -29
- package/esm2022/lib/service/core-init/missing-translation-handler.mjs +0 -10
- package/esm2022/lib/service/core-init/translate-json-loader.mjs +0 -117
- package/esm2022/lib/service/device/device.interface.mjs +0 -6
- package/esm2022/lib/service/device/device.service.mjs +0 -144
- package/esm2022/lib/service/dms/dms.service.interface.mjs +0 -2
- package/esm2022/lib/service/dms/dms.service.mjs +0 -440
- package/esm2022/lib/service/event/event.interface.mjs +0 -2
- package/esm2022/lib/service/event/event.service.mjs +0 -38
- package/esm2022/lib/service/event/events.mjs +0 -14
- package/esm2022/lib/service/idm/idm.interface.mjs +0 -2
- package/esm2022/lib/service/idm/idm.service.mjs +0 -34
- package/esm2022/lib/service/logger/logger-console.service.mjs +0 -73
- package/esm2022/lib/service/logger/logger.interface.mjs +0 -2
- package/esm2022/lib/service/logger/logger.mjs +0 -27
- package/esm2022/lib/service/notification/notification.service.mjs +0 -131
- package/esm2022/lib/service/object-config/object-config.interface.mjs +0 -2
- package/esm2022/lib/service/object-config/object-config.service.mjs +0 -233
- package/esm2022/lib/service/pending-changes/pending-changes-component.interface.mjs +0 -5
- package/esm2022/lib/service/pending-changes/pending-changes-guard.service.mjs +0 -25
- package/esm2022/lib/service/pending-changes/pending-changes.service.mjs +0 -123
- package/esm2022/lib/service/prediction/prediction.interface.mjs +0 -2
- package/esm2022/lib/service/prediction/prediction.service.mjs +0 -60
- package/esm2022/lib/service/retention/retention.interface.mjs +0 -2
- package/esm2022/lib/service/retention/retention.service.mjs +0 -65
- package/esm2022/lib/service/search/search.service.interface.mjs +0 -39
- package/esm2022/lib/service/search/search.service.mjs +0 -261
- package/esm2022/lib/service/search/search.utils.mjs +0 -142
- package/esm2022/lib/service/session-storage/session-storage.service.mjs +0 -50
- package/esm2022/lib/service/system/object-form.interface.mjs +0 -2
- package/esm2022/lib/service/system/system.enum.mjs +0 -167
- package/esm2022/lib/service/system/system.interface.mjs +0 -2
- package/esm2022/lib/service/system/system.service.mjs +0 -597
- package/esm2022/lib/service/upload/upload.interface.mjs +0 -2
- package/esm2022/lib/service/upload/upload.service.mjs +0 -228
- package/esm2022/lib/service/user/user-storage.service.mjs +0 -38
- package/esm2022/lib/service/user/user.service.mjs +0 -211
- package/esm2022/lib/util/utils.helper.enum.mjs +0 -15
- package/esm2022/lib/util/utils.mjs +0 -373
- package/esm2022/yuuvis-client-core.mjs +0 -5
- package/lib/client-core.module.d.ts +0 -20
- package/lib/client-core.shared.module.d.ts +0 -10
- package/lib/service/auth/oidc.service.d.ts +0 -16
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1jb3JlL3NyYy9saWIvc2VydmljZS91cGxvYWQvdXBsb2FkLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG4vKipcbiAqIEludHJlZmljZSBmb3IgcHJvdmlkaW5nIGFuIHVwbG9hZGluZyBzdGF0dXMgb2YgYW4gb2JqZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NTdGF0dXMge1xuICBpdGVtczogUHJvZ3Jlc3NTdGF0dXNJdGVtW107XG4gIGVycjogbnVtYmVyO1xufVxuLyoqXG4gKiBJcyBwYXJ0IG9mIHRoZSBgUHJvZ3Jlc3NTdGF0dXNgIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzU3RhdHVzSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIHByb2dyZXNzOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICByZXN1bHQ/OiBVcGxvYWRSZXN1bHRbXTtcbiAgZXJyPzoge1xuICAgIGNvZGU6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gIH07XG59XG4vKipcbiAqIGlzIGEgcGFydCBvZiBgQ3JlYXRlZE9iamVjdGAgaW50ZXJmYWNlXG4gKi9cbmludGVyZmFjZSBDb250ZW50U3RyZWFtIHtcbiAgY29udGVudFN0cmVhbUlkOiBzdHJpbmc7XG4gIHJlcG9zaXRvcnlJZDogc3RyaW5nO1xuICBkaWdlc3Q6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgYXJjaGl2ZVBhdGg6IHN0cmluZztcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIG1pbWVUeXBlOiBzdHJpbmc7XG59XG4vKipcbiAqIEludGVyZmFjZSBwcm92aWRuZyBwcm9wZXJ0aWVzIG9mIHVwbG9hZGVkIG9iamVjdCB0eXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkUmVzdWx0IHtcbiAgb2JqZWN0SWQ6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBjb250ZW50U3RyZWFtSWQ6IHN0cmluZztcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRoYXQgd2FzIHVzZWQgYnkgdXBsb2FkIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVkT2JqZWN0IHtcbiAgYm9keT86IHtcbiAgICBvYmplY3RzOiB7XG4gICAgICBwcm9wZXJ0aWVzOiBhbnk7XG4gICAgICBjb250ZW50U3RyZWFtcz86IENvbnRlbnRTdHJlYW1bXTtcbiAgICB9W107XG4gIH07XG59XG4iXX0=
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import { HttpClient, HttpEventType, HttpRequest, HttpResponse } from '@angular/common/http';
|
|
2
|
-
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, Observable, ReplaySubject, Subject, throwError } from 'rxjs';
|
|
4
|
-
import { catchError, filter, map, scan, tap } from 'rxjs/operators';
|
|
5
|
-
import { Utils } from '../../util/utils';
|
|
6
|
-
import { BackendService } from '../backend/backend.service';
|
|
7
|
-
import { Logger } from '../logger/logger';
|
|
8
|
-
import { BaseObjectTypeField } from '../system/system.enum';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
const transformResponse = () => map((res) => (res && res.body ? res.body.objects.map((val) => val) : null));
|
|
11
|
-
/**
|
|
12
|
-
* Service for providing upload of different object types into a client.
|
|
13
|
-
*/
|
|
14
|
-
export class UploadService {
|
|
15
|
-
constructor() {
|
|
16
|
-
this.#backend = inject(BackendService);
|
|
17
|
-
this.#http = inject(HttpClient);
|
|
18
|
-
this.#logger = inject(Logger);
|
|
19
|
-
this.#status = { err: 0, items: [] };
|
|
20
|
-
this.#statusSource = new ReplaySubject();
|
|
21
|
-
this.status$ = this.#statusSource.pipe(scan((acc, newVal) => ({ ...acc, ...newVal }), this.#status));
|
|
22
|
-
this.#uploadStatus = new BehaviorSubject(null);
|
|
23
|
-
this.uploadStatus$ = this.#uploadStatus.asObservable();
|
|
24
|
-
}
|
|
25
|
-
#backend;
|
|
26
|
-
#http;
|
|
27
|
-
#logger;
|
|
28
|
-
#status;
|
|
29
|
-
#statusSource;
|
|
30
|
-
#uploadStatus;
|
|
31
|
-
/**
|
|
32
|
-
* Upload a file.
|
|
33
|
-
* @param url The URL to upload the file to
|
|
34
|
-
* @param file The file to be uploaded
|
|
35
|
-
* @param label A label that will show up in the upload overlay dialog while uploading
|
|
36
|
-
*/
|
|
37
|
-
upload(url, file, label, silent) {
|
|
38
|
-
return this.#executeUpload(url, file, label || file.name, silent);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Upload files using multipart upload.
|
|
42
|
-
* @param url The URL to upload the files to
|
|
43
|
-
* @param files The files to be uploaded
|
|
44
|
-
* @param data Data to be send along with the files
|
|
45
|
-
* @param label A label that will show up in the upload overlay dialog while uploading
|
|
46
|
-
*/
|
|
47
|
-
uploadMultipart(url, files, data, label, silent) {
|
|
48
|
-
return this.#executeMultipartUpload(url, files, label || 'Upload', data, silent);
|
|
49
|
-
}
|
|
50
|
-
createDocument(url, data) {
|
|
51
|
-
const formData = this.#createFormData({ data });
|
|
52
|
-
const request = this.#createHttpRequest(url, { formData }, false);
|
|
53
|
-
return this.#http.request(request).pipe(filter((obj) => obj && obj.body), transformResponse(), catchError((err) => throwError(() => err)));
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Cancels an upload request and removes it from the list of files being uploaded.
|
|
57
|
-
* @param id ID of the UploadItem to be canceled
|
|
58
|
-
*/
|
|
59
|
-
cancelItem(id) {
|
|
60
|
-
if (id) {
|
|
61
|
-
const match = this.#status.items.find((i) => i.id === id);
|
|
62
|
-
if (match) {
|
|
63
|
-
match.subscription.unsubscribe();
|
|
64
|
-
this.#status.items = this.#status.items.filter((i) => i.id !== id);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
this.#status.items.forEach((element) => element.subscription.unsubscribe());
|
|
69
|
-
this.#status.items = [];
|
|
70
|
-
}
|
|
71
|
-
this.#status.err = this.#status.items.filter((i) => i.err).length;
|
|
72
|
-
this.#statusSource.next(this.#status);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Prepares Formdata for multipart upload.
|
|
76
|
-
* @param from contains form and or file
|
|
77
|
-
*/
|
|
78
|
-
#createFormData({ file, data }) {
|
|
79
|
-
const formData = new FormData();
|
|
80
|
-
(file || []).forEach((f) => formData.append('files', f, f.name));
|
|
81
|
-
data ? formData.append('data', new Blob([JSON.stringify(data)], { type: 'application/json' })) : null;
|
|
82
|
-
return formData;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Prepares Http Request.
|
|
86
|
-
* @param url The URL to upload the file to
|
|
87
|
-
* @param content formdata or single file
|
|
88
|
-
* @param reportProgress Request should report upload progress
|
|
89
|
-
* @param method Request method
|
|
90
|
-
*/
|
|
91
|
-
#createHttpRequest(url, content, reportProgress, method = 'POST') {
|
|
92
|
-
const { formData, file } = content;
|
|
93
|
-
// add request param to bypass the serviceworker
|
|
94
|
-
url += `${url.indexOf('?') === -1 ? '?' : '&'}ngsw-bypass=1`;
|
|
95
|
-
let headers = this.#backend.getAuthHeaders();
|
|
96
|
-
if (file) {
|
|
97
|
-
headers = headers.set('Content-Disposition', `attachment; filename*=utf-8''${encodeURIComponent(file.name)}`);
|
|
98
|
-
}
|
|
99
|
-
return new HttpRequest(method, url, file || formData, { headers, reportProgress });
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Prepares single file POST upload.
|
|
103
|
-
* @param url The URL to upload the file to
|
|
104
|
-
* @param file The file to be uploaded
|
|
105
|
-
* @param label A label that will show up in the upload overlay dialog while uploading
|
|
106
|
-
*/
|
|
107
|
-
#executeUpload(url, file, label, silent = false) {
|
|
108
|
-
const request = this.#createHttpRequest(url, { file }, true);
|
|
109
|
-
return silent ? this.#http.request(request) : this.#startUploadWithFile(request, label).pipe(transformResponse());
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Prepare multipart upload.
|
|
113
|
-
* @param url The URL to upload the file to
|
|
114
|
-
* @param file Array of files to be uploaded
|
|
115
|
-
* @param label A label that will show up in the upload overlay dialog while uploading
|
|
116
|
-
* @param data Data to be send along with the files
|
|
117
|
-
*/
|
|
118
|
-
#executeMultipartUpload(url, file, label, data, silent = false) {
|
|
119
|
-
const formData = this.#createFormData({ file, data });
|
|
120
|
-
const request = this.#createHttpRequest(url, { formData }, true);
|
|
121
|
-
return silent ? this.#http.request(request) : this.#startUploadWithFile(request, label).pipe(transformResponse());
|
|
122
|
-
}
|
|
123
|
-
#generateResult(result) {
|
|
124
|
-
const objects = result.body?.objects;
|
|
125
|
-
if (objects && objects.length > 1) {
|
|
126
|
-
const data = objects[0];
|
|
127
|
-
// const bp = this.#system.getBaseProperties();
|
|
128
|
-
// const label = data.properties[bp.title] ? data.properties[bp.title].value : '...';
|
|
129
|
-
// TODO: Get the label from somewhere
|
|
130
|
-
const label = '...';
|
|
131
|
-
return [
|
|
132
|
-
{
|
|
133
|
-
objectId: objects.map((val) => val.properties[BaseObjectTypeField.OBJECT_ID].value),
|
|
134
|
-
contentStreamId: data.contentStreams[0]?.contentStreamId,
|
|
135
|
-
filename: data.contentStreams[0]?.fileName,
|
|
136
|
-
label: `(${objects.length}) ${label}`
|
|
137
|
-
}
|
|
138
|
-
];
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
return result.body.objects.map((o) => ({
|
|
142
|
-
objectId: o.properties[BaseObjectTypeField.OBJECT_ID].value,
|
|
143
|
-
contentStreamId: o.contentStreams[0]?.contentStreamId,
|
|
144
|
-
filename: o.contentStreams[0]?.fileName,
|
|
145
|
-
// label: o.properties[bp.title] ? o.properties[bp.title].value : o.contentStreams![0]?.fileName
|
|
146
|
-
// TODO: Get the label from somewhere
|
|
147
|
-
label: o.contentStreams[0]?.fileName
|
|
148
|
-
}));
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
#createProgressStatus(event, progress, id) {
|
|
152
|
-
if (event.type === HttpEventType.UploadProgress) {
|
|
153
|
-
const percentDone = Math.round((100 * event.loaded) / event.total);
|
|
154
|
-
progress.next(percentDone);
|
|
155
|
-
}
|
|
156
|
-
else if (event instanceof HttpResponse) {
|
|
157
|
-
progress.complete();
|
|
158
|
-
// add upload response
|
|
159
|
-
// this.status.items = this.status.items.filter(s => s.id !== id);
|
|
160
|
-
const idx = this.#status.items.findIndex((s) => s.id === id);
|
|
161
|
-
if (idx !== -1) {
|
|
162
|
-
this.#status.items[idx].result = this.#generateResult(event);
|
|
163
|
-
this.#statusSource.next(this.#status);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
#createUploadError(err, progress, id) {
|
|
168
|
-
const statusItem = this.#status.items.find((s) => s.id === id);
|
|
169
|
-
statusItem.err = {
|
|
170
|
-
code: err.status,
|
|
171
|
-
message: err.error ? err.error.errorMessage : err.message
|
|
172
|
-
};
|
|
173
|
-
this.#logger.error('upload failed', statusItem);
|
|
174
|
-
this.#status.err++;
|
|
175
|
-
this.#statusSource.next(this.#status);
|
|
176
|
-
progress.next(0);
|
|
177
|
-
return throwError(() => new Error(err.message));
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Actually starts the upload process.
|
|
181
|
-
* @param request Request to be executed
|
|
182
|
-
* @param label A label that will show up in the upload overlay dialog while uploading
|
|
183
|
-
*/
|
|
184
|
-
#startUploadWithFile(request, label) {
|
|
185
|
-
return new Observable((o) => {
|
|
186
|
-
const id = Utils.uuid();
|
|
187
|
-
const progress = new Subject();
|
|
188
|
-
let result;
|
|
189
|
-
// Create a subscription from the http request that will be applied to the upload
|
|
190
|
-
// status item in order to be able to cancel the request later on.
|
|
191
|
-
this.#uploadStatus.next(false);
|
|
192
|
-
const subscription = this.#http
|
|
193
|
-
.request(request)
|
|
194
|
-
.pipe(catchError((err) => this.#createUploadError(err, progress, id)), tap((event) => this.#createProgressStatus(event, progress, id)))
|
|
195
|
-
// actual return value of this function
|
|
196
|
-
.subscribe({
|
|
197
|
-
next: (res) => (res.status ? (result = res) : null),
|
|
198
|
-
error: (err) => {
|
|
199
|
-
o.error(err);
|
|
200
|
-
this.#uploadStatus.next(true);
|
|
201
|
-
o.complete();
|
|
202
|
-
},
|
|
203
|
-
complete: () => {
|
|
204
|
-
o.next(result);
|
|
205
|
-
this.#uploadStatus.next(true);
|
|
206
|
-
o.complete();
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
this.#status.items.push({
|
|
210
|
-
id,
|
|
211
|
-
filename: label,
|
|
212
|
-
progress: progress.asObservable(),
|
|
213
|
-
subscription,
|
|
214
|
-
err: undefined
|
|
215
|
-
});
|
|
216
|
-
this.#statusSource.next(this.#status);
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
220
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, providedIn: 'root' }); }
|
|
221
|
-
}
|
|
222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadService, decorators: [{
|
|
223
|
-
type: Injectable,
|
|
224
|
-
args: [{
|
|
225
|
-
providedIn: 'root'
|
|
226
|
-
}]
|
|
227
|
-
}] });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvdXBsb2FkL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWdDLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHNUQsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRTNIOztHQUVHO0FBSUgsTUFBTSxPQUFP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LElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNmLENBQUM7YUFDRixDQUFDLENBQUM7WUFFTCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pDLFlBQVk7Z0JBQ1osR0FBRyxFQUFFLFNBQVM7YUFDZixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXhOVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHNjYW4sIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQgeyBCYWNrZW5kU2VydmljZSB9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xuaW1wb3J0IHsgQmFzZU9iamVjdFR5cGVGaWVsZCB9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uZW51bSc7XG5pbXBvcnQgeyBDcmVhdGVkT2JqZWN0LCBQcm9ncmVzc1N0YXR1cywgVXBsb2FkUmVzdWx0IH0gZnJvbSAnLi91cGxvYWQuaW50ZXJmYWNlJztcblxuY29uc3QgdHJhbnNmb3JtUmVzcG9uc2UgPSAoKSA9PiBtYXAoKHJlczogQ3JlYXRlZE9iamVjdCkgPT4gKHJlcyAmJiByZXMuYm9keSA/IHJlcy5ib2R5Lm9iamVjdHMubWFwKCh2YWwpID0+IHZhbCkgOiBudWxsKSk7XG5cbi8qKlxuICogU2VydmljZSBmb3IgcHJvdmlkaW5nIHVwbG9hZCBvZiBkaWZmZXJlbnQgb2JqZWN0IHR5cGVzIGludG8gYSBjbGllbnQuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZFNlcnZpY2Uge1xuICByZWFkb25seSAjYmFja2VuZCA9IGluamVjdChCYWNrZW5kU2VydmljZSk7XG4gIHJlYWRvbmx5ICNodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICByZWFkb25seSAjbG9nZ2VyID0gaW5qZWN0KExvZ2dlcik7XG5cbiAgI3N0YXR1czogUHJvZ3Jlc3NTdGF0dXMgPSB7IGVycjogMCwgaXRlbXM6IFtdIH07XG4gICNzdGF0dXNTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxQcm9ncmVzc1N0YXR1cz4oKTtcbiAgc3RhdHVzJDogT2JzZXJ2YWJsZTxQcm9ncmVzc1N0YXR1cz4gPSB0aGlzLiNzdGF0dXNTb3VyY2UucGlwZShzY2FuKChhY2M6IFByb2dyZXNzU3RhdHVzLCBuZXdWYWwpID0+ICh7IC4uLmFjYywgLi4ubmV3VmFsIH0pLCB0aGlzLiNzdGF0dXMpKTtcbiAgI3VwbG9hZFN0YXR1cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICB1cGxvYWRTdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBudWxsPiA9IHRoaXMuI3VwbG9hZFN0YXR1cy5hc09ic2VydmFibGUoKTtcblxuICAvKipcbiAgICogVXBsb2FkIGEgZmlsZS5cbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIHVwbG9hZCB0aGUgZmlsZSB0b1xuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSB1cGxvYWRlZFxuICAgKiBAcGFyYW0gbGFiZWwgQSBsYWJlbCB0aGF0IHdpbGwgc2hvdyB1cCBpbiB0aGUgdXBsb2FkIG92ZXJsYXkgZGlhbG9nIHdoaWxlIHVwbG9hZGluZ1xuICAgKi9cbiAgdXBsb2FkKHVybDogc3RyaW5nLCBmaWxlOiBGaWxlLCBsYWJlbD86IHN0cmluZywgc2lsZW50PzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI2V4ZWN1dGVVcGxvYWQodXJsLCBmaWxlLCBsYWJlbCB8fCBmaWxlLm5hbWUsIHNpbGVudCk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIGZpbGVzIHVzaW5nIG11bHRpcGFydCB1cGxvYWQuXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byB1cGxvYWQgdGhlIGZpbGVzIHRvXG4gICAqIEBwYXJhbSBmaWxlcyBUaGUgZmlsZXMgdG8gYmUgdXBsb2FkZWRcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSBzZW5kIGFsb25nIHdpdGggdGhlIGZpbGVzXG4gICAqIEBwYXJhbSBsYWJlbCBBIGxhYmVsIHRoYXQgd2lsbCBzaG93IHVwIGluIHRoZSB1cGxvYWQgb3ZlcmxheSBkaWFsb2cgd2hpbGUgdXBsb2FkaW5nXG4gICAqL1xuICB1cGxvYWRNdWx0aXBhcnQodXJsOiBzdHJpbmcsIGZpbGVzOiBGaWxlW10sIGRhdGE/OiBhbnksIGxhYmVsPzogc3RyaW5nLCBzaWxlbnQ/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jZXhlY3V0ZU11bHRpcGFydFVwbG9hZCh1cmwsIGZpbGVzLCBsYWJlbCB8fCAnVXBsb2FkJywgZGF0YSwgc2lsZW50KTtcbiAgfVxuXG4gIGNyZWF0ZURvY3VtZW50KHVybDogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IHRoaXMuI2NyZWF0ZUZvcm1EYXRhKHsgZGF0YSB9KTtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy4jY3JlYXRlSHR0cFJlcXVlc3QodXJsLCB7IGZvcm1EYXRhIH0sIGZhbHNlKTtcbiAgICByZXR1cm4gdGhpcy4jaHR0cC5yZXF1ZXN0KHJlcXVlc3QpLnBpcGUoXG4gICAgICBmaWx0ZXIoKG9iajogYW55KSA9PiBvYmogJiYgb2JqLmJvZHkpLFxuICAgICAgdHJhbnNmb3JtUmVzcG9uc2UoKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gdGhyb3dFcnJvcigoKSA9PiBlcnIpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBhbiB1cGxvYWQgcmVxdWVzdCBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBsaXN0IG9mIGZpbGVzIGJlaW5nIHVwbG9hZGVkLlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIFVwbG9hZEl0ZW0gdG8gYmUgY2FuY2VsZWRcbiAgICovXG4gIGNhbmNlbEl0ZW0oaWQ/OiBzdHJpbmcpIHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy4jc3RhdHVzLml0ZW1zLmZpbmQoKGkpID0+IGkuaWQgPT09IGlkKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy4jc3RhdHVzLml0ZW1zID0gdGhpcy4jc3RhdHVzLml0ZW1zLmZpbHRlcigoaSkgPT4gaS5pZCAhPT0gaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNzdGF0dXMuaXRlbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICB0aGlzLiNzdGF0dXMuaXRlbXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy4jc3RhdHVzLmVyciA9IHRoaXMuI3N0YXR1cy5pdGVtcy5maWx0ZXIoKGkpID0+IGkuZXJyKS5sZW5ndGg7XG4gICAgdGhpcy4jc3RhdHVzU291cmNlLm5leHQodGhpcy4jc3RhdHVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlcyBGb3JtZGF0YSBmb3IgbXVsdGlwYXJ0IHVwbG9hZC5cbiAgICogQHBhcmFtIGZyb20gY29udGFpbnMgZm9ybSBhbmQgb3IgZmlsZVxuICAgKi9cbiAgI2NyZWF0ZUZvcm1EYXRhKHsgZmlsZSwgZGF0YSB9OiB7IGRhdGE/OiBhbnk7IGZpbGU/OiBGaWxlW10gfSk6IEZvcm1EYXRhIHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAoZmlsZSB8fCBbXSkuZm9yRWFjaCgoZikgPT4gZm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGYsIGYubmFtZSkpO1xuICAgIGRhdGEgPyBmb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoZGF0YSldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSkgOiBudWxsO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlcyBIdHRwIFJlcXVlc3QuXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byB1cGxvYWQgdGhlIGZpbGUgdG9cbiAgICogQHBhcmFtIGNvbnRlbnQgZm9ybWRhdGEgb3Igc2luZ2xlIGZpbGVcbiAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIFJlcXVlc3Qgc2hvdWxkIHJlcG9ydCB1cGxvYWQgcHJvZ3Jlc3NcbiAgICogQHBhcmFtIG1ldGhvZCBSZXF1ZXN0IG1ldGhvZFxuICAgKi9cbiAgI2NyZWF0ZUh0dHBSZXF1ZXN0KHVybDogc3RyaW5nLCBjb250ZW50OiBQYXJ0aWFsPHsgZm9ybURhdGE6IEZvcm1EYXRhOyBmaWxlOiBGaWxlIH0+LCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiwgbWV0aG9kID0gJ1BPU1QnKTogSHR0cFJlcXVlc3Q8YW55PiB7XG4gICAgY29uc3QgeyBmb3JtRGF0YSwgZmlsZSB9ID0gY29udGVudDtcbiAgICAvLyBhZGQgcmVxdWVzdCBwYXJhbSB0byBieXBhc3MgdGhlIHNlcnZpY2V3b3JrZXJcbiAgICB1cmwgKz0gYCR7dXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJid9bmdzdy1ieXBhc3M9MWA7XG5cbiAgICBsZXQgaGVhZGVycyA9IHRoaXMuI2JhY2tlbmQuZ2V0QXV0aEhlYWRlcnMoKTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJywgYGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj11dGYtOCcnJHtlbmNvZGVVUklDb21wb25lbnQoZmlsZS5uYW1lKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEh0dHBSZXF1ZXN0KG1ldGhvZCwgdXJsLCBmaWxlIHx8IGZvcm1EYXRhLCB7IGhlYWRlcnMsIHJlcG9ydFByb2dyZXNzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByZXBhcmVzIHNpbmdsZSBmaWxlIFBPU1QgdXBsb2FkLlxuICAgKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gdXBsb2FkIHRoZSBmaWxlIHRvXG4gICAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIHRvIGJlIHVwbG9hZGVkXG4gICAqIEBwYXJhbSBsYWJlbCBBIGxhYmVsIHRoYXQgd2lsbCBzaG93IHVwIGluIHRoZSB1cGxvYWQgb3ZlcmxheSBkaWFsb2cgd2hpbGUgdXBsb2FkaW5nXG4gICAqL1xuICAjZXhlY3V0ZVVwbG9hZCh1cmw6IHN0cmluZywgZmlsZTogRmlsZSwgbGFiZWw6IHN0cmluZywgc2lsZW50ID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLiNjcmVhdGVIdHRwUmVxdWVzdCh1cmwsIHsgZmlsZSB9LCB0cnVlKTtcbiAgICByZXR1cm4gc2lsZW50ID8gdGhpcy4jaHR0cC5yZXF1ZXN0KHJlcXVlc3QpIDogdGhpcy4jc3RhcnRVcGxvYWRXaXRoRmlsZShyZXF1ZXN0LCBsYWJlbCkucGlwZSh0cmFuc2Zvcm1SZXNwb25zZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlIG11bHRpcGFydCB1cGxvYWQuXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byB1cGxvYWQgdGhlIGZpbGUgdG9cbiAgICogQHBhcmFtIGZpbGUgQXJyYXkgb2YgZmlsZXMgdG8gYmUgdXBsb2FkZWRcbiAgICogQHBhcmFtIGxhYmVsIEEgbGFiZWwgdGhhdCB3aWxsIHNob3cgdXAgaW4gdGhlIHVwbG9hZCBvdmVybGF5IGRpYWxvZyB3aGlsZSB1cGxvYWRpbmdcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSBzZW5kIGFsb25nIHdpdGggdGhlIGZpbGVzXG4gICAqL1xuICAjZXhlY3V0ZU11bHRpcGFydFVwbG9hZCh1cmw6IHN0cmluZywgZmlsZTogRmlsZVtdLCBsYWJlbDogc3RyaW5nLCBkYXRhPzogYW55LCBzaWxlbnQgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gdGhpcy4jY3JlYXRlRm9ybURhdGEoeyBmaWxlLCBkYXRhIH0pO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLiNjcmVhdGVIdHRwUmVxdWVzdCh1cmwsIHsgZm9ybURhdGEgfSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHNpbGVudCA/IHRoaXMuI2h0dHAucmVxdWVzdChyZXF1ZXN0KSA6IHRoaXMuI3N0YXJ0VXBsb2FkV2l0aEZpbGUocmVxdWVzdCwgbGFiZWwpLnBpcGUodHJhbnNmb3JtUmVzcG9uc2UoKSk7XG4gIH1cblxuICAjZ2VuZXJhdGVSZXN1bHQocmVzdWx0OiBDcmVhdGVkT2JqZWN0KTogVXBsb2FkUmVzdWx0W10ge1xuICAgIGNvbnN0IG9iamVjdHMgPSByZXN1bHQuYm9keT8ub2JqZWN0cztcbiAgICBpZiAob2JqZWN0cyAmJiBvYmplY3RzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBvYmplY3RzWzBdO1xuICAgICAgLy8gY29uc3QgYnAgPSB0aGlzLiNzeXN0ZW0uZ2V0QmFzZVByb3BlcnRpZXMoKTtcbiAgICAgIC8vIGNvbnN0IGxhYmVsID0gZGF0YS5wcm9wZXJ0aWVzW2JwLnRpdGxlXSA/IGRhdGEucHJvcGVydGllc1ticC50aXRsZV0udmFsdWUgOiAnLi4uJztcbiAgICAgIC8vIFRPRE86IEdldCB0aGUgbGFiZWwgZnJvbSBzb21ld2hlcmVcbiAgICAgIGNvbnN0IGxhYmVsID0gJy4uLic7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgb2JqZWN0SWQ6IG9iamVjdHMubWFwKCh2YWw6IGFueSkgPT4gdmFsLnByb3BlcnRpZXNbQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfSURdLnZhbHVlKSxcbiAgICAgICAgICBjb250ZW50U3RyZWFtSWQ6IGRhdGEuY29udGVudFN0cmVhbXMhWzBdPy5jb250ZW50U3RyZWFtSWQsXG4gICAgICAgICAgZmlsZW5hbWU6IGRhdGEuY29udGVudFN0cmVhbXMhWzBdPy5maWxlTmFtZSxcbiAgICAgICAgICBsYWJlbDogYCgke29iamVjdHMubGVuZ3RofSkgJHtsYWJlbH1gXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQuYm9keSEub2JqZWN0cy5tYXAoKG8pID0+ICh7XG4gICAgICAgIG9iamVjdElkOiBvLnByb3BlcnRpZXNbQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfSURdLnZhbHVlLFxuICAgICAgICBjb250ZW50U3RyZWFtSWQ6IG8uY29udGVudFN0cmVhbXMhWzBdPy5jb250ZW50U3RyZWFtSWQsXG4gICAgICAgIGZpbGVuYW1lOiBvLmNvbnRlbnRTdHJlYW1zIVswXT8uZmlsZU5hbWUsXG4gICAgICAgIC8vIGxhYmVsOiBvLnByb3BlcnRpZXNbYnAudGl0bGVdID8gby5wcm9wZXJ0aWVzW2JwLnRpdGxlXS52YWx1ZSA6IG8uY29udGVudFN0cmVhbXMhWzBdPy5maWxlTmFtZVxuICAgICAgICAvLyBUT0RPOiBHZXQgdGhlIGxhYmVsIGZyb20gc29tZXdoZXJlXG4gICAgICAgIGxhYmVsOiBvLmNvbnRlbnRTdHJlYW1zIVswXT8uZmlsZU5hbWVcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlUHJvZ3Jlc3NTdGF0dXMoZXZlbnQ6IGFueSwgcHJvZ3Jlc3M6IFN1YmplY3Q8bnVtYmVyPiwgaWQ6IHN0cmluZykge1xuICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICBjb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbCk7XG4gICAgICBwcm9ncmVzcy5uZXh0KHBlcmNlbnREb25lKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICBwcm9ncmVzcy5jb21wbGV0ZSgpO1xuICAgICAgLy8gYWRkIHVwbG9hZCByZXNwb25zZVxuICAgICAgLy8gdGhpcy5zdGF0dXMuaXRlbXMgPSB0aGlzLnN0YXR1cy5pdGVtcy5maWx0ZXIocyA9PiBzLmlkICE9PSBpZCk7XG4gICAgICBjb25zdCBpZHggPSB0aGlzLiNzdGF0dXMuaXRlbXMuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBpZCk7XG4gICAgICBpZiAoaWR4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLiNzdGF0dXMuaXRlbXNbaWR4XS5yZXN1bHQgPSB0aGlzLiNnZW5lcmF0ZVJlc3VsdChldmVudCk7XG4gICAgICAgIHRoaXMuI3N0YXR1c1NvdXJjZS5uZXh0KHRoaXMuI3N0YXR1cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZVVwbG9hZEVycm9yKGVycjogSHR0cEVycm9yUmVzcG9uc2UsIHByb2dyZXNzOiBTdWJqZWN0PG51bWJlcj4sIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEh0dHBFcnJvclJlc3BvbnNlPiB7XG4gICAgY29uc3Qgc3RhdHVzSXRlbSA9IHRoaXMuI3N0YXR1cy5pdGVtcy5maW5kKChzKSA9PiBzLmlkID09PSBpZCk7XG4gICAgc3RhdHVzSXRlbSEuZXJyID0ge1xuICAgICAgY29kZTogZXJyLnN0YXR1cyxcbiAgICAgIG1lc3NhZ2U6IGVyci5lcnJvciA/IGVyci5lcnJvci5lcnJvck1lc3NhZ2UgOiBlcnIubWVzc2FnZVxuICAgIH07XG4gICAgdGhpcy4jbG9nZ2VyLmVycm9yKCd1cGxvYWQgZmFpbGVkJywgc3RhdHVzSXRlbSk7XG4gICAgdGhpcy4jc3RhdHVzLmVycisrO1xuICAgIHRoaXMuI3N0YXR1c1NvdXJjZS5uZXh0KHRoaXMuI3N0YXR1cyk7XG4gICAgcHJvZ3Jlc3MubmV4dCgwKTtcbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoZXJyLm1lc3NhZ2UpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxseSBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLlxuICAgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJlIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBsYWJlbCBBIGxhYmVsIHRoYXQgd2lsbCBzaG93IHVwIGluIHRoZSB1cGxvYWQgb3ZlcmxheSBkaWFsb2cgd2hpbGUgdXBsb2FkaW5nXG4gICAqL1xuICAjc3RhcnRVcGxvYWRXaXRoRmlsZShyZXF1ZXN0OiBhbnksIGxhYmVsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENyZWF0ZWRPYmplY3Q+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG86IGFueSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBVdGlscy51dWlkKCk7XG4gICAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICAgIC8vIENyZWF0ZSBhIHN1YnNjcmlwdGlvbiBmcm9tIHRoZSBodHRwIHJlcXVlc3QgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHVwbG9hZFxuICAgICAgLy8gc3RhdHVzIGl0ZW0gaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBjYW5jZWwgdGhlIHJlcXVlc3QgbGF0ZXIgb24uXG4gICAgICB0aGlzLiN1cGxvYWRTdGF0dXMubmV4dChmYWxzZSk7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLiNodHRwXG4gICAgICAgIC5yZXF1ZXN0KHJlcXVlc3QpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuI2NyZWF0ZVVwbG9hZEVycm9yKGVyciwgcHJvZ3Jlc3MsIGlkKSksXG4gICAgICAgICAgdGFwKChldmVudDogSHR0cEVycm9yUmVzcG9uc2UgfCBIdHRwRXZlbnQ8dW5rbm93bj4pID0+IHRoaXMuI2NyZWF0ZVByb2dyZXNzU3RhdHVzKGV2ZW50LCBwcm9ncmVzcywgaWQpKVxuICAgICAgICApXG4gICAgICAgIC8vIGFjdHVhbCByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvblxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IChyZXMuc3RhdHVzID8gKHJlc3VsdCA9IHJlcykgOiBudWxsKSxcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgby5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy4jdXBsb2FkU3RhdHVzLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgby5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLiN1cGxvYWRTdGF0dXMubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNzdGF0dXMuaXRlbXMucHVzaCh7XG4gICAgICAgIGlkLFxuICAgICAgICBmaWxlbmFtZTogbGFiZWwsXG4gICAgICAgIHByb2dyZXNzOiBwcm9ncmVzcy5hc09ic2VydmFibGUoKSxcbiAgICAgICAgc3Vic2NyaXB0aW9uLFxuICAgICAgICBlcnI6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgICB0aGlzLiNzdGF0dXNTb3VyY2UubmV4dCh0aGlzLiNzdGF0dXMpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import { switchMap } from 'rxjs';
|
|
3
|
-
import { BackendService } from '../backend/backend.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* Service providing user related remote storage. This service is used load and
|
|
7
|
-
* store user related data from any device.
|
|
8
|
-
*/
|
|
9
|
-
export class UserStorageService {
|
|
10
|
-
#backend = inject(BackendService);
|
|
11
|
-
#USERS_SETTINGS = '/users/settings';
|
|
12
|
-
// prefix to be added to every section key to be able to later distinguish
|
|
13
|
-
// between user settings and other settings
|
|
14
|
-
#SECTION_PREFIX = 'x-user-';
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* @param section section key for
|
|
18
|
-
* @param value value to be stored
|
|
19
|
-
*/
|
|
20
|
-
getItem(section) {
|
|
21
|
-
return this.#backend.get(`${this.#USERS_SETTINGS}/${this.#sanitizeSection(this.#SECTION_PREFIX + section)}`);
|
|
22
|
-
}
|
|
23
|
-
setItem(section, data) {
|
|
24
|
-
return this.getItem(section).pipe(switchMap((current) => this.#backend.post(`${this.#USERS_SETTINGS}/${this.#sanitizeSection(this.#SECTION_PREFIX + section)}`, { ...current, ...data })));
|
|
25
|
-
}
|
|
26
|
-
#sanitizeSection(section) {
|
|
27
|
-
return encodeURIComponent(section);
|
|
28
|
-
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserStorageService, providedIn: 'root' }); }
|
|
31
|
-
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserStorageService, decorators: [{
|
|
33
|
-
type: Injectable,
|
|
34
|
-
args: [{
|
|
35
|
-
providedIn: 'root'
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvdXNlci91c2VyLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFNUQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWxDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztJQUNwQywwRUFBMEU7SUFDMUUsMkNBQTJDO0lBQzNDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFFNUI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxJQUF5QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3hKLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBekJVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFja2VuZFNlcnZpY2UgfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljZSBwcm92aWRpbmcgdXNlciByZWxhdGVkIHJlbW90ZSBzdG9yYWdlLiBUaGlzIHNlcnZpY2UgaXMgdXNlZCBsb2FkIGFuZFxuICogc3RvcmUgdXNlciByZWxhdGVkIGRhdGEgZnJvbSBhbnkgZGV2aWNlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyU3RvcmFnZVNlcnZpY2Uge1xuICAjYmFja2VuZCA9IGluamVjdChCYWNrZW5kU2VydmljZSk7XG5cbiAgI1VTRVJTX1NFVFRJTkdTID0gJy91c2Vycy9zZXR0aW5ncyc7XG4gIC8vIHByZWZpeCB0byBiZSBhZGRlZCB0byBldmVyeSBzZWN0aW9uIGtleSB0byBiZSBhYmxlIHRvIGxhdGVyIGRpc3Rpbmd1aXNoXG4gIC8vIGJldHdlZW4gdXNlciBzZXR0aW5ncyBhbmQgb3RoZXIgc2V0dGluZ3NcbiAgI1NFQ1RJT05fUFJFRklYID0gJ3gtdXNlci0nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gc2VjdGlvbiBzZWN0aW9uIGtleSBmb3JcbiAgICogQHBhcmFtIHZhbHVlICB2YWx1ZSB0byBiZSBzdG9yZWRcbiAgICovXG4gIGdldEl0ZW0oc2VjdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZ2V0KGAke3RoaXMuI1VTRVJTX1NFVFRJTkdTfS8ke3RoaXMuI3Nhbml0aXplU2VjdGlvbih0aGlzLiNTRUNUSU9OX1BSRUZJWCArIHNlY3Rpb24pfWApO1xuICB9XG5cbiAgc2V0SXRlbShzZWN0aW9uOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW0oc2VjdGlvbikucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY3VycmVudCkgPT4gdGhpcy4jYmFja2VuZC5wb3N0KGAke3RoaXMuI1VTRVJTX1NFVFRJTkdTfS8ke3RoaXMuI3Nhbml0aXplU2VjdGlvbih0aGlzLiNTRUNUSU9OX1BSRUZJWCArIHNlY3Rpb24pfWAsIHsgLi4uY3VycmVudCwgLi4uZGF0YSB9KSlcbiAgICApO1xuICB9XG5cbiAgI3Nhbml0aXplU2VjdGlvbihzZWN0aW9uOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHNlY3Rpb24pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { HttpParams } from '@angular/common/http';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { BehaviorSubject, forkJoin, of } from 'rxjs';
|
|
5
|
-
import { catchError, map, switchMap, tap } from 'rxjs/operators';
|
|
6
|
-
import { YuvUser } from '../../model/yuv-user.model';
|
|
7
|
-
import { OidcService } from '../auth/oidc.service';
|
|
8
|
-
import { BackendService } from '../backend/backend.service';
|
|
9
|
-
import { Direction } from '../config/config.interface';
|
|
10
|
-
import { ConfigService } from '../config/config.service';
|
|
11
|
-
import { EventService } from '../event/event.service';
|
|
12
|
-
import { YuvEventType } from '../event/events';
|
|
13
|
-
import { Logger } from '../logger/logger';
|
|
14
|
-
import { AdministrationRoles } from '../system/system.enum';
|
|
15
|
-
import { SystemService } from '../system/system.service';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "../backend/backend.service";
|
|
18
|
-
import * as i2 from "@ngx-translate/core";
|
|
19
|
-
import * as i3 from "../logger/logger";
|
|
20
|
-
import * as i4 from "../system/system.service";
|
|
21
|
-
import * as i5 from "../auth/oidc.service";
|
|
22
|
-
import * as i6 from "../event/event.service";
|
|
23
|
-
import * as i7 from "../config/config.service";
|
|
24
|
-
/**
|
|
25
|
-
* Service providing user account configurations.
|
|
26
|
-
*/
|
|
27
|
-
export class UserService {
|
|
28
|
-
// #GLOBAL_SETTINGS = '/users/globalsettings/';
|
|
29
|
-
#USERS_SETTINGS;
|
|
30
|
-
#DEFAULT_SETTINGS;
|
|
31
|
-
#SETTINGS_SECTION_OBJECTCONFIG;
|
|
32
|
-
#user;
|
|
33
|
-
#userSource;
|
|
34
|
-
/**
|
|
35
|
-
* @ignore
|
|
36
|
-
*/
|
|
37
|
-
constructor(backend, translate, logger, system, oidc, eventService, config) {
|
|
38
|
-
this.backend = backend;
|
|
39
|
-
this.translate = translate;
|
|
40
|
-
this.logger = logger;
|
|
41
|
-
this.system = system;
|
|
42
|
-
this.oidc = oidc;
|
|
43
|
-
this.eventService = eventService;
|
|
44
|
-
this.config = config;
|
|
45
|
-
// #GLOBAL_SETTINGS = '/users/globalsettings/';
|
|
46
|
-
this.#USERS_SETTINGS = '/users/settings/';
|
|
47
|
-
this.#DEFAULT_SETTINGS = '/users/settings';
|
|
48
|
-
this.#SETTINGS_SECTION_OBJECTCONFIG = 'object-config';
|
|
49
|
-
this.#userSource = new BehaviorSubject(this.#user);
|
|
50
|
-
this.user$ = this.#userSource.asObservable();
|
|
51
|
-
this.globalSettings = new Map();
|
|
52
|
-
this.canCreateObjects = false;
|
|
53
|
-
}
|
|
54
|
-
getUiDirection(iso) {
|
|
55
|
-
// languages that are read right to left
|
|
56
|
-
const rtlLanguages = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];
|
|
57
|
-
return rtlLanguages.indexOf(iso) === -1 ? Direction.LTR : Direction.RTL;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Set a new current user
|
|
61
|
-
* @param user The user to be set as current user
|
|
62
|
-
*/
|
|
63
|
-
setCurrentUser(user) {
|
|
64
|
-
this.#user = user;
|
|
65
|
-
this.changeClientLocale('', false);
|
|
66
|
-
this.#userSource.next(this.#user);
|
|
67
|
-
}
|
|
68
|
-
getCurrentUser() {
|
|
69
|
-
return this.#user;
|
|
70
|
-
}
|
|
71
|
-
get hasAdminRole() {
|
|
72
|
-
return this.#user?.authorities?.includes(AdministrationRoles.ADMIN) || false;
|
|
73
|
-
}
|
|
74
|
-
get hasSystemRole() {
|
|
75
|
-
return this.#user?.authorities?.includes(AdministrationRoles.SYSTEM) || false;
|
|
76
|
-
}
|
|
77
|
-
get hasAdministrationRoles() {
|
|
78
|
-
return this.hasAdminRole || this.hasSystemRole;
|
|
79
|
-
}
|
|
80
|
-
get hasManageSettingsRole() {
|
|
81
|
-
const customRole = this.config.get('core.permissions.manageSettingsRole');
|
|
82
|
-
const manageSettingsRole = customRole || AdministrationRoles.MANAGE_SETTINGS;
|
|
83
|
-
return this.#user?.authorities?.includes(manageSettingsRole) || false;
|
|
84
|
-
}
|
|
85
|
-
get isAdvancedUser() {
|
|
86
|
-
const customRole = this.config.get('core.permissions.advancedUserRole');
|
|
87
|
-
const advancedUserRole = customRole || AdministrationRoles.MANAGE_SETTINGS;
|
|
88
|
-
return this.#user?.authorities?.includes(advancedUserRole) || false;
|
|
89
|
-
}
|
|
90
|
-
get isRetentionManager() {
|
|
91
|
-
const customRole = this.config.get('core.permissions.retentionManagerRole');
|
|
92
|
-
const retenetionManagerRole = customRole || AdministrationRoles.MANAGE_SETTINGS;
|
|
93
|
-
return this.#user?.authorities?.includes(retenetionManagerRole) || false;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Change the users client locale
|
|
97
|
-
* @param iso ISO locale string to be set as new client locale
|
|
98
|
-
*/
|
|
99
|
-
changeClientLocale(iso, persist = true) {
|
|
100
|
-
if (this.#user) {
|
|
101
|
-
const languages = this.config.getClientLocales().map((lang) => lang.iso);
|
|
102
|
-
iso = iso || this.#user.getClientLocale(this.config.getDefaultClientLocale());
|
|
103
|
-
if (!languages.includes(iso)) {
|
|
104
|
-
iso = this.config.getDefaultClientLocale();
|
|
105
|
-
}
|
|
106
|
-
this.logger.debug("Changed client locale to '" + iso + "'");
|
|
107
|
-
this.backend.setHeader('Accept-Language', iso);
|
|
108
|
-
this.#user.uiDirection = this.getUiDirection(iso);
|
|
109
|
-
this.#user.userSettings.locale = iso;
|
|
110
|
-
if (this.translate.currentLang !== iso || this.system.authData?.language !== iso) {
|
|
111
|
-
const ob = persist
|
|
112
|
-
? forkJoin([
|
|
113
|
-
this.translate.use(iso),
|
|
114
|
-
this.system.updateLocalizations(iso),
|
|
115
|
-
this.saveUserSettings(this.#user.userSettings).pipe(tap(() => {
|
|
116
|
-
// this.#userSource.next(this.#user);
|
|
117
|
-
this.logger.debug('Loading system definitions i18n resources for new locale.');
|
|
118
|
-
}))
|
|
119
|
-
])
|
|
120
|
-
: this.translate.use(iso);
|
|
121
|
-
ob.subscribe(() => this.eventService.trigger(YuvEventType.CLIENT_LOCALE_CHANGED, iso));
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
saveUserSettings(settings) {
|
|
126
|
-
if (this.#user) {
|
|
127
|
-
console.log(this.#user.userSettings);
|
|
128
|
-
this.#user.userSettings = { ...this.#user.userSettings, ...settings };
|
|
129
|
-
return this.backend.post(this.#DEFAULT_SETTINGS, this.#user.userSettings).pipe(tap(() => this.#userSource.next(this.#user)));
|
|
130
|
-
}
|
|
131
|
-
else
|
|
132
|
-
return of(null);
|
|
133
|
-
}
|
|
134
|
-
fetchUserSettings() {
|
|
135
|
-
return this.backend.get('/dms/permissions').pipe(catchError((e) => of(undefined)), switchMap((res) => {
|
|
136
|
-
this.setUserPermissions(res);
|
|
137
|
-
return this.backend.get(this.#DEFAULT_SETTINGS);
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
setUserPermissions(res) {
|
|
141
|
-
this.userPermissions = {
|
|
142
|
-
create: this.mapPermissions('CREATE', res),
|
|
143
|
-
write: this.mapPermissions('WRITE', res),
|
|
144
|
-
read: this.mapPermissions('READ', res),
|
|
145
|
-
delete: this.mapPermissions('DELETE', res)
|
|
146
|
-
};
|
|
147
|
-
const sp = {
|
|
148
|
-
createableObjectTypes: [
|
|
149
|
-
...this.userPermissions.create.folderTypes,
|
|
150
|
-
...this.userPermissions.create.objectTypes,
|
|
151
|
-
...this.userPermissions.create.secondaryObjectTypes
|
|
152
|
-
],
|
|
153
|
-
searchableObjectTypes: [
|
|
154
|
-
...this.userPermissions.read.folderTypes,
|
|
155
|
-
...this.userPermissions.read.objectTypes,
|
|
156
|
-
...this.userPermissions.read.secondaryObjectTypes
|
|
157
|
-
]
|
|
158
|
-
};
|
|
159
|
-
this.system.setPermissions(sp);
|
|
160
|
-
this.canCreateObjects = sp.createableObjectTypes.length > 0;
|
|
161
|
-
}
|
|
162
|
-
mapPermissions(section, apiResponse) {
|
|
163
|
-
const res = apiResponse[section] || {};
|
|
164
|
-
return {
|
|
165
|
-
folderTypes: res['folderTypeIds'] || [],
|
|
166
|
-
objectTypes: res['objectTypeIds'] || [],
|
|
167
|
-
secondaryObjectTypes: res['secondaryObjectTypeIds'] || []
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Search for a user based on a search term
|
|
172
|
-
* @param term Search term
|
|
173
|
-
* @param excludeMe whether or not to exclude myself from the result list
|
|
174
|
-
* @param roles narrow down the search results by certain roles
|
|
175
|
-
*/
|
|
176
|
-
queryUser(term, excludeMe, roles) {
|
|
177
|
-
let params = new HttpParams().set('search', term).set('excludeMe', `${!!excludeMe}`);
|
|
178
|
-
roles?.length && roles.map((r) => (params = params.append(`roles`, r)));
|
|
179
|
-
return this.backend.get(`/idm/users?${params}`).pipe(map((users) => (!users ? [] : users.map((u) => new YuvUser(u)))));
|
|
180
|
-
}
|
|
181
|
-
getUserById(id) {
|
|
182
|
-
return this.backend.get(`/idm/users/${id}`).pipe(map((user) => new YuvUser(user, this.#user.userSettings)));
|
|
183
|
-
}
|
|
184
|
-
logout(redirRoute) {
|
|
185
|
-
if (this.backend.authUsesOpenIdConnect()) {
|
|
186
|
-
this.oidc.logout();
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
const redir = redirRoute ? `?redir=${redirRoute}` : '';
|
|
190
|
-
window.location.href = `${this.backend.getApiBase('logout')}${redir}`;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
getSettings(section) {
|
|
194
|
-
return this.#user ? this.backend.get(this.#USERS_SETTINGS + encodeURIComponent(section)) : of(null);
|
|
195
|
-
}
|
|
196
|
-
saveObjectConfig(objectConfigs) {
|
|
197
|
-
return this.backend.post(this.#USERS_SETTINGS + encodeURIComponent(this.#SETTINGS_SECTION_OBJECTCONFIG), objectConfigs);
|
|
198
|
-
}
|
|
199
|
-
loadObjectConfig() {
|
|
200
|
-
return this.getSettings(this.#SETTINGS_SECTION_OBJECTCONFIG).pipe(catchError(() => of(undefined)));
|
|
201
|
-
}
|
|
202
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserService, deps: [{ token: i1.BackendService }, { token: i2.TranslateService }, { token: i3.Logger }, { token: i4.SystemService }, { token: i5.OidcService }, { token: i6.EventService }, { token: i7.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
203
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
204
|
-
}
|
|
205
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserService, decorators: [{
|
|
206
|
-
type: Injectable,
|
|
207
|
-
args: [{
|
|
208
|
-
providedIn: 'root'
|
|
209
|
-
}]
|
|
210
|
-
}], ctorParameters: () => [{ type: i1.BackendService }, { type: i2.TranslateService }, { type: i3.Logger }, { type: i4.SystemService }, { type: i5.OidcService }, { type: i6.EventService }, { type: i7.ConfigService }] });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL3VzZXIvdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFnQixPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFHekQ7O0dBRUc7QUFJSCxNQUFN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cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVzZXJTZXR0aW5ncywgWXV2VXNlciB9IGZyb20gJy4uLy4uL21vZGVsL3l1di11c2VyLm1vZGVsJztcbmltcG9ydCB7IE9pZGNTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9vaWRjLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFja2VuZFNlcnZpY2UgfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICcuLi9jb25maWcvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgWXV2RXZlbnRUeXBlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnRzJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xuaW1wb3J0IHsgQWRtaW5pc3RyYXRpb25Sb2xlcyB9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uZW51bSc7XG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbnMsIFVzZXJQZXJtaXNzaW9uc1NlY3Rpb24gfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlZE9iamVjdENvbmZpZyB9IGZyb20gJy4uL29iamVjdC1jb25maWcvb2JqZWN0LWNvbmZpZy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFNlcnZpY2UgcHJvdmlkaW5nIHVzZXIgYWNjb3VudCBjb25maWd1cmF0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2Uge1xuICAvLyAjR0xPQkFMX1NFVFRJTkdTID0gJy91c2Vycy9nbG9iYWxzZXR0aW5ncy8nO1xuICAjVVNFUlNfU0VUVElOR1MgPSAnL3VzZXJzL3NldHRpbmdzLyc7XG4gICNERUZBVUxUX1NFVFRJTkdTID0gJy91c2Vycy9zZXR0aW5ncyc7XG5cbiAgI1NFVFRJTkdTX1NFQ1RJT05fT0JKRUNUQ09ORklHID0gJ29iamVjdC1jb25maWcnO1xuXG4gICN1c2VyPzogWXV2VXNlcjtcbiAgI3VzZXJTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFl1dlVzZXIgfCB1bmRlZmluZWQ+KHRoaXMuI3VzZXIpO1xuICB1c2VyJDogT2JzZXJ2YWJsZTxZdXZVc2VyIHwgdW5kZWZpbmVkPiA9IHRoaXMuI3VzZXJTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2xvYmFsU2V0dGluZ3MgPSBuZXcgTWFwKCk7XG4gIHVzZXJQZXJtaXNzaW9ucz86IFVzZXJQZXJtaXNzaW9ucztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgb2lkYzogT2lkY1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZVxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRVaURpcmVjdGlvbihpc286IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gbGFuZ3VhZ2VzIHRoYXQgYXJlIHJlYWQgcmlnaHQgdG8gbGVmdFxuICAgIGNvbnN0IHJ0bExhbmd1YWdlcyA9IFsnYXInLCAnYXJjJywgJ2R2JywgJ2ZhJywgJ2hhJywgJ2hlJywgJ2todycsICdrcycsICdrdScsICdwcycsICd1cicsICd5aSddO1xuICAgIHJldHVybiBydGxMYW5ndWFnZXMuaW5kZXhPZihpc28pID09PSAtMSA/IERpcmVjdGlvbi5MVFIgOiBEaXJlY3Rpb24uUlRMO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyBjdXJyZW50IHVzZXJcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYmUgc2V0IGFzIGN1cnJlbnQgdXNlclxuICAgKi9cbiAgcHVibGljIHNldEN1cnJlbnRVc2VyKHVzZXI6IFl1dlVzZXIpIHtcbiAgICB0aGlzLiN1c2VyID0gdXNlcjtcbiAgICB0aGlzLmNoYW5nZUNsaWVudExvY2FsZSgnJywgZmFsc2UpO1xuICAgIHRoaXMuI3VzZXJTb3VyY2UubmV4dCh0aGlzLiN1c2VyKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRVc2VyKCk6IFl1dlVzZXIge1xuICAgIHJldHVybiB0aGlzLiN1c2VyITtcbiAgfVxuXG4gIGdldCBoYXNBZG1pblJvbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI3VzZXI/LmF1dGhvcml0aWVzPy5pbmNsdWRlcyhBZG1pbmlzdHJhdGlvblJvbGVzLkFETUlOKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNTeXN0ZW1Sb2xlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiN1c2VyPy5hdXRob3JpdGllcz8uaW5jbHVkZXMoQWRtaW5pc3RyYXRpb25Sb2xlcy5TWVNURU0pIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGhhc0FkbWluaXN0cmF0aW9uUm9sZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQWRtaW5Sb2xlIHx8IHRoaXMuaGFzU3lzdGVtUm9sZTtcbiAgfVxuXG4gIGdldCBoYXNNYW5hZ2VTZXR0aW5nc1JvbGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VzdG9tUm9sZSA9IHRoaXMuY29uZmlnLmdldCgnY29yZS5wZXJtaXNzaW9ucy5tYW5hZ2VTZXR0aW5nc1JvbGUnKTtcbiAgICBjb25zdCBtYW5hZ2VTZXR0aW5nc1JvbGUgPSBjdXN0b21Sb2xlIHx8IEFkbWluaXN0cmF0aW9uUm9sZXMuTUFOQUdFX1NFVFRJTkdTO1xuICAgIHJldHVybiB0aGlzLiN1c2VyPy5hdXRob3JpdGllcz8uaW5jbHVkZXMobWFuYWdlU2V0dGluZ3NSb2xlKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc0FkdmFuY2VkVXNlcigpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXN0b21Sb2xlID0gdGhpcy5jb25maWcuZ2V0KCdjb3JlLnBlcm1pc3Npb25zLmFkdmFuY2VkVXNlclJvbGUnKTtcbiAgICBjb25zdCBhZHZhbmNlZFVzZXJSb2xlID0gY3VzdG9tUm9sZSB8fCBBZG1pbmlzdHJhdGlvblJvbGVzLk1BTkFHRV9TRVRUSU5HUztcbiAgICByZXR1cm4gdGhpcy4jdXNlcj8uYXV0aG9yaXRpZXM/LmluY2x1ZGVzKGFkdmFuY2VkVXNlclJvbGUpIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzUmV0ZW50aW9uTWFuYWdlcigpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXN0b21Sb2xlID0gdGhpcy5jb25maWcuZ2V0KCdjb3JlLnBlcm1pc3Npb25zLnJldGVudGlvbk1hbmFnZXJSb2xlJyk7XG4gICAgY29uc3QgcmV0ZW5ldGlvbk1hbmFnZXJSb2xlID0gY3VzdG9tUm9sZSB8fCBBZG1pbmlzdHJhdGlvblJvbGVzLk1BTkFHRV9TRVRUSU5HUztcbiAgICByZXR1cm4gdGhpcy4jdXNlcj8uYXV0aG9yaXRpZXM/LmluY2x1ZGVzKHJldGVuZXRpb25NYW5hZ2VyUm9sZSkgfHwgZmFsc2U7XG4gIH1cblxuICBjYW5DcmVhdGVPYmplY3RzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgdXNlcnMgY2xpZW50IGxvY2FsZVxuICAgKiBAcGFyYW0gaXNvIElTTyBsb2NhbGUgc3RyaW5nIHRvIGJlIHNldCBhcyBuZXcgY2xpZW50IGxvY2FsZVxuICAgKi9cbiAgY2hhbmdlQ2xpZW50TG9jYWxlKGlzbzogc3RyaW5nLCBwZXJzaXN0ID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiN1c2VyKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSB0aGlzLmNvbmZpZy5nZXRDbGllbnRMb2NhbGVzKCkubWFwKChsYW5nKSA9PiBsYW5nLmlzbyk7XG4gICAgICBpc28gPSBpc28gfHwgdGhpcy4jdXNlci5nZXRDbGllbnRMb2NhbGUodGhpcy5jb25maWcuZ2V0RGVmYXVsdENsaWVudExvY2FsZSgpKTtcbiAgICAgIGlmICghbGFuZ3VhZ2VzLmluY2x1ZGVzKGlzbykpIHtcbiAgICAgICAgaXNvID0gdGhpcy5jb25maWcuZ2V0RGVmYXVsdENsaWVudExvY2FsZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJDaGFuZ2VkIGNsaWVudCBsb2NhbGUgdG8gJ1wiICsgaXNvICsgXCInXCIpO1xuICAgICAgdGhpcy5iYWNrZW5kLnNldEhlYWRlcignQWNjZXB0LUxhbmd1YWdlJywgaXNvKTtcbiAgICAgIHRoaXMuI3VzZXIudWlEaXJlY3Rpb24gPSB0aGlzLmdldFVpRGlyZWN0aW9uKGlzbyk7XG4gICAgICB0aGlzLiN1c2VyLnVzZXJTZXR0aW5ncy5sb2NhbGUgPSBpc287XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgIT09IGlzbyB8fCB0aGlzLnN5c3RlbS5hdXRoRGF0YT8ubGFuZ3VhZ2UgIT09IGlzbykge1xuICAgICAgICBjb25zdCBvYiA9IHBlcnNpc3RcbiAgICAgICAgICA/IGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGlzbyksXG4gICAgICAgICAgICAgIHRoaXMuc3lzdGVtLnVwZGF0ZUxvY2FsaXphdGlvbnMoaXNvKSxcbiAgICAgICAgICAgICAgdGhpcy5zYXZlVXNlclNldHRpbmdzKHRoaXMuI3VzZXIudXNlclNldHRpbmdzKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyB0aGlzLiN1c2VyU291cmNlLm5leHQodGhpcy4jdXNlcik7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTG9hZGluZyBzeXN0ZW0gZGVmaW5pdGlvbnMgaTE4biByZXNvdXJjZXMgZm9yIG5ldyBsb2NhbGUuJyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlLnVzZShpc28pO1xuICAgICAgICBvYi5zdWJzY3JpYmUoKCkgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihZdXZFdmVudFR5cGUuQ0xJRU5UX0xPQ0FMRV9DSEFOR0VELCBpc28pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzYXZlVXNlclNldHRpbmdzKHNldHRpbmdzOiBQYXJ0aWFsPFVzZXJTZXR0aW5ncz4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLiN1c2VyKSB7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLiN1c2VyLnVzZXJTZXR0aW5ncyk7XG5cbiAgICAgIHRoaXMuI3VzZXIudXNlclNldHRpbmdzID0geyAuLi50aGlzLiN1c2VyLnVzZXJTZXR0aW5ncywgLi4uc2V0dGluZ3MgfTtcbiAgICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdCh0aGlzLiNERUZBVUxUX1NFVFRJTkdTLCB0aGlzLiN1c2VyLnVzZXJTZXR0aW5ncykucGlwZSh0YXAoKCkgPT4gdGhpcy4jdXNlclNvdXJjZS5uZXh0KHRoaXMuI3VzZXIpKSk7XG4gICAgfSBlbHNlIHJldHVybiBvZihudWxsKTtcbiAgfVxuXG4gIGZldGNoVXNlclNldHRpbmdzKCk6IE9ic2VydmFibGU8VXNlclNldHRpbmdzPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQoJy9kbXMvcGVybWlzc2lvbnMnKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4gb2YodW5kZWZpbmVkKSksXG4gICAgICBzd2l0Y2hNYXAoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnNldFVzZXJQZXJtaXNzaW9ucyhyZXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldCh0aGlzLiNERUZBVUxUX1NFVFRJTkdTKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VXNlclBlcm1pc3Npb25zKHJlczogYW55KTogdm9pZCB7XG4gICAgdGhpcy51c2VyUGVybWlzc2lvbnMgPSB7XG4gICAgICBjcmVhdGU6IHRoaXMubWFwUGVybWlzc2lvbnMoJ0NSRUFURScsIHJlcyksXG4gICAgICB3cml0ZTogdGhpcy5tYXBQZXJtaXNzaW9ucygnV1JJVEUnLCByZXMpLFxuICAgICAgcmVhZDogdGhpcy5tYXBQZXJtaXNzaW9ucygnUkVBRCcsIHJlcyksXG4gICAgICBkZWxldGU6IHRoaXMubWFwUGVybWlzc2lvbnMoJ0RFTEVURScsIHJlcylcbiAgICB9O1xuICAgIGNvbnN0IHNwID0ge1xuICAgICAgY3JlYXRlYWJsZU9iamVjdFR5cGVzOiBbXG4gICAgICAgIC4uLnRoaXMudXNlclBlcm1pc3Npb25zLmNyZWF0ZS5mb2xkZXJUeXBlcyxcbiAgICAgICAgLi4udGhpcy51c2VyUGVybWlzc2lvbnMuY3JlYXRlLm9iamVjdFR5cGVzLFxuICAgICAgICAuLi50aGlzLnVzZXJQZXJtaXNzaW9ucy5jcmVhdGUuc2Vjb25kYXJ5T2JqZWN0VHlwZXNcbiAgICAgIF0sXG4gICAgICBzZWFyY2hhYmxlT2JqZWN0VHlwZXM6IFtcbiAgICAgICAgLi4udGhpcy51c2VyUGVybWlzc2lvbnMucmVhZC5mb2xkZXJUeXBlcyxcbiAgICAgICAgLi4udGhpcy51c2VyUGVybWlzc2lvbnMucmVhZC5vYmplY3RUeXBlcyxcbiAgICAgICAgLi4udGhpcy51c2VyUGVybWlzc2lvbnMucmVhZC5zZWNvbmRhcnlPYmplY3RUeXBlc1xuICAgICAgXVxuICAgIH07XG4gICAgdGhpcy5zeXN0ZW0uc2V0UGVybWlzc2lvbnMoc3ApO1xuICAgIHRoaXMuY2FuQ3JlYXRlT2JqZWN0cyA9IHNwLmNyZWF0ZWFibGVPYmplY3RUeXBlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBQZXJtaXNzaW9ucyhzZWN0aW9uOiAnQ1JFQVRFJyB8ICdSRUFEJyB8ICdXUklURScgfCAnREVMRVRFJywgYXBpUmVzcG9uc2U6IGFueSk6IFVzZXJQZXJtaXNzaW9uc1NlY3Rpb24ge1xuICAgIGNvbnN0IHJlcyA9IGFwaVJlc3BvbnNlW3NlY3Rpb25dIHx8IHt9O1xuICAgIHJldHVybiB7XG4gICAgICBmb2xkZXJUeXBlczogcmVzWydmb2xkZXJUeXBlSWRzJ10gfHwgW10sXG4gICAgICBvYmplY3RUeXBlczogcmVzWydvYmplY3RUeXBlSWRzJ10gfHwgW10sXG4gICAgICBzZWNvbmRhcnlPYmplY3RUeXBlczogcmVzWydzZWNvbmRhcnlPYmplY3RUeXBlSWRzJ10gfHwgW11cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBmb3IgYSB1c2VyIGJhc2VkIG9uIGEgc2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIHRlcm0gU2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIGV4Y2x1ZGVNZSB3aGV0aGVyIG9yIG5vdCB0byBleGNsdWRlIG15c2VsZiBmcm9tIHRoZSByZXN1bHQgbGlzdFxuICAgKiBAcGFyYW0gcm9sZXMgbmFycm93IGRvd24gdGhlIHNlYXJjaCByZXN1bHRzIGJ5IGNlcnRhaW4gcm9sZXNcbiAgICovXG4gIHF1ZXJ5VXNlcih0ZXJtOiBzdHJpbmcsIGV4Y2x1ZGVNZT86IGJvb2xlYW4sIHJvbGVzPzogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFl1dlVzZXJbXT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnc2VhcmNoJywgdGVybSkuc2V0KCdleGNsdWRlTWUnLCBgJHshIWV4Y2x1ZGVNZX1gKTtcbiAgICByb2xlcz8ubGVuZ3RoICYmIHJvbGVzLm1hcCgocikgPT4gKHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoYHJvbGVzYCwgcikpKTtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldChgL2lkbS91c2Vycz8ke3BhcmFtc31gKS5waXBlKG1hcCgodXNlcnMpID0+ICghdXNlcnMgPyBbXSA6IHVzZXJzLm1hcCgodTogYW55KSA9PiBuZXcgWXV2VXNlcih1KSkpKSk7XG4gIH1cblxuICBnZXRVc2VyQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxZdXZVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQoYC9pZG0vdXNlcnMvJHtpZH1gKS5waXBlKG1hcCgodXNlcikgPT4gbmV3IFl1dlVzZXIodXNlciwgdGhpcy4jdXNlciEudXNlclNldHRpbmdzKSkpO1xuICB9XG5cbiAgbG9nb3V0KHJlZGlyUm91dGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5iYWNrZW5kLmF1dGhVc2VzT3BlbklkQ29ubmVjdCgpKSB7XG4gICAgICB0aGlzLm9pZGMubG9nb3V0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZGlyID0gcmVkaXJSb3V0ZSA/IGA/cmVkaXI9JHtyZWRpclJvdXRlfWAgOiAnJztcbiAgICAgICh3aW5kb3cgYXMgYW55KS5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5iYWNrZW5kLmdldEFwaUJhc2UoJ2xvZ291dCcpfSR7cmVkaXJ9YDtcbiAgICB9XG4gIH1cblxuICBnZXRTZXR0aW5ncyhzZWN0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLiN1c2VyID8gdGhpcy5iYWNrZW5kLmdldCh0aGlzLiNVU0VSU19TRVRUSU5HUyArIGVuY29kZVVSSUNvbXBvbmVudChzZWN0aW9uKSkgOiBvZihudWxsKTtcbiAgfVxuXG4gIHNhdmVPYmplY3RDb25maWcob2JqZWN0Q29uZmlnczogU3RvcmVkT2JqZWN0Q29uZmlnKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodGhpcy4jVVNFUlNfU0VUVElOR1MgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy4jU0VUVElOR1NfU0VDVElPTl9PQkpFQ1RDT05GSUcpLCBvYmplY3RDb25maWdzKTtcbiAgfVxuXG4gIGxvYWRPYmplY3RDb25maWcoKTogT2JzZXJ2YWJsZTxTdG9yZWRPYmplY3RDb25maWcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRTZXR0aW5ncyh0aGlzLiNTRVRUSU5HU19TRUNUSU9OX09CSkVDVENPTkZJRykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YodW5kZWZpbmVkKSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export var Sort;
|
|
2
|
-
(function (Sort) {
|
|
3
|
-
Sort["ASC"] = "asc";
|
|
4
|
-
Sort["DESC"] = "desc";
|
|
5
|
-
})(Sort || (Sort = {}));
|
|
6
|
-
export var ClassificationPrefix;
|
|
7
|
-
(function (ClassificationPrefix) {
|
|
8
|
-
ClassificationPrefix["EMAIL"] = "mailto:";
|
|
9
|
-
ClassificationPrefix["EMAIL_ICON"] = "envelope";
|
|
10
|
-
ClassificationPrefix["PHONE"] = "tel:";
|
|
11
|
-
ClassificationPrefix["PHONE_ICON"] = "phone";
|
|
12
|
-
ClassificationPrefix["URL"] = "";
|
|
13
|
-
ClassificationPrefix["URL_ICON"] = "globe";
|
|
14
|
-
})(ClassificationPrefix || (ClassificationPrefix = {}));
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuaGVscGVyLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3V0aWwvdXRpbHMuaGVscGVyLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksSUFHWDtBQUhELFdBQVksSUFBSTtJQUNkLG1CQUFXLENBQUE7SUFDWCxxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLElBQUksS0FBSixJQUFJLFFBR2Y7QUFFRCxNQUFNLENBQU4sSUFBWSxvQkFPWDtBQVBELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLCtDQUF1QixDQUFBO0lBQ3ZCLHNDQUFjLENBQUE7SUFDZCw0Q0FBb0IsQ0FBQTtJQUNwQixnQ0FBUSxDQUFBO0lBQ1IsMENBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQVBXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFPL0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTb3J0IHtcbiAgQVNDID0gJ2FzYycsXG4gIERFU0MgPSAnZGVzYydcbn1cblxuZXhwb3J0IGVudW0gQ2xhc3NpZmljYXRpb25QcmVmaXgge1xuICBFTUFJTCA9ICdtYWlsdG86JyxcbiAgRU1BSUxfSUNPTiA9ICdlbnZlbG9wZScsXG4gIFBIT05FID0gJ3RlbDonLFxuICBQSE9ORV9JQ09OID0gJ3Bob25lJyxcbiAgVVJMID0gJycsXG4gIFVSTF9JQ09OID0gJ2dsb2JlJ1xufVxuXG5leHBvcnQgdHlwZSBGb3JtYXR0ZWRNYWlsVG8gPSBzdHJpbmcgfCBzdHJpbmdbXTtcbiJdfQ==
|