valtech-components 2.0.695 → 2.0.712
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/esm2022/lib/components/molecules/select-search/select-search.component.mjs +25 -11
- package/esm2022/lib/components/organisms/form/form.component.mjs +10 -62
- package/esm2022/lib/services/firebase/firestore-collection.mjs +33 -1
- package/esm2022/lib/services/firebase/notifications.service.mjs +42 -16
- package/esm2022/lib/services/i18n/config.mjs +19 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +125 -87
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/select-search/select-search.component.d.ts +3 -1
- package/lib/components/organisms/form/form.component.d.ts +2 -4
- package/lib/services/firebase/firestore-collection.d.ts +8 -0
- package/lib/services/firebase/notifications.service.d.ts +16 -10
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -13,6 +13,8 @@ import { map } from 'rxjs/operators';
|
|
|
13
13
|
import { AuthService } from '../auth/auth.service';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
import * as i1 from "./firestore-collection";
|
|
16
|
+
/** Límite por defecto de notificaciones a cargar */
|
|
17
|
+
const DEFAULT_LIMIT = 50;
|
|
16
18
|
/**
|
|
17
19
|
* Servicio para leer notificaciones desde Firestore.
|
|
18
20
|
*
|
|
@@ -90,7 +92,9 @@ export class NotificationsService {
|
|
|
90
92
|
// Path relativo - FirestoreService agrega automáticamente apps/{appId}/
|
|
91
93
|
// NO agregar apps/ aquí para evitar doble prefijo
|
|
92
94
|
const basePath = `users/${userId}/notifications`;
|
|
93
|
-
this.collection = this.collectionFactory.create(basePath, {
|
|
95
|
+
this.collection = this.collectionFactory.create(basePath, {
|
|
96
|
+
timestamps: true,
|
|
97
|
+
});
|
|
94
98
|
console.log('[Notifications] Initialized with path:', basePath);
|
|
95
99
|
}
|
|
96
100
|
/**
|
|
@@ -109,39 +113,59 @@ export class NotificationsService {
|
|
|
109
113
|
// LECTURA
|
|
110
114
|
// ===========================================================================
|
|
111
115
|
/**
|
|
112
|
-
* Obtiene
|
|
113
|
-
*
|
|
116
|
+
* Obtiene notificaciones ordenadas por fecha descendente (real-time).
|
|
117
|
+
* Se actualiza automáticamente cuando cambian los datos.
|
|
118
|
+
*
|
|
119
|
+
* @param limit - Máximo de notificaciones a cargar (default: 50)
|
|
114
120
|
*/
|
|
115
|
-
getAll() {
|
|
121
|
+
getAll(limit = DEFAULT_LIMIT) {
|
|
116
122
|
if (!this.collection)
|
|
117
123
|
return of([]);
|
|
118
124
|
return this.collection.watchAll({
|
|
119
125
|
orderBy: [{ field: 'createdAt', direction: 'desc' }],
|
|
126
|
+
limit,
|
|
120
127
|
});
|
|
121
128
|
}
|
|
122
129
|
/**
|
|
123
|
-
* Obtiene
|
|
130
|
+
* Obtiene notificaciones (one-time fetch sin listener).
|
|
124
131
|
* Útil para cargas iniciales sin necesidad de updates en tiempo real.
|
|
132
|
+
*
|
|
133
|
+
* @param limit - Máximo de notificaciones a cargar (default: 50)
|
|
125
134
|
*/
|
|
126
|
-
async getAllOnce() {
|
|
135
|
+
async getAllOnce(limit = DEFAULT_LIMIT) {
|
|
127
136
|
if (!this.collection)
|
|
128
137
|
return [];
|
|
129
138
|
return this.collection.getAllOnce({
|
|
130
139
|
orderBy: [{ field: 'createdAt', direction: 'desc' }],
|
|
140
|
+
limit,
|
|
131
141
|
});
|
|
132
142
|
}
|
|
133
143
|
/**
|
|
134
|
-
* Obtiene solo notificaciones no leídas.
|
|
144
|
+
* Obtiene solo notificaciones no leídas (real-time, filtrado server-side).
|
|
145
|
+
*
|
|
146
|
+
* @param limit - Máximo de notificaciones (default: 50)
|
|
135
147
|
*/
|
|
136
|
-
getUnread() {
|
|
137
|
-
|
|
148
|
+
getUnread(limit = DEFAULT_LIMIT) {
|
|
149
|
+
if (!this.collection)
|
|
150
|
+
return of([]);
|
|
151
|
+
return this.collection.watchAll({
|
|
152
|
+
where: [{ field: 'isRead', operator: '==', value: false }],
|
|
153
|
+
orderBy: [{ field: 'createdAt', direction: 'desc' }],
|
|
154
|
+
limit,
|
|
155
|
+
});
|
|
138
156
|
}
|
|
139
157
|
/**
|
|
140
|
-
* Cuenta notificaciones no leídas.
|
|
158
|
+
* Cuenta notificaciones no leídas (real-time, filtrado server-side).
|
|
141
159
|
* Útil para badges en UI.
|
|
142
160
|
*/
|
|
143
161
|
getUnreadCount() {
|
|
144
|
-
|
|
162
|
+
if (!this.collection)
|
|
163
|
+
return of(0);
|
|
164
|
+
return this.collection
|
|
165
|
+
.watchAll({
|
|
166
|
+
where: [{ field: 'isRead', operator: '==', value: false }],
|
|
167
|
+
})
|
|
168
|
+
.pipe(map(n => n.length));
|
|
145
169
|
}
|
|
146
170
|
/**
|
|
147
171
|
* Obtiene una notificación por ID.
|
|
@@ -163,7 +187,7 @@ export class NotificationsService {
|
|
|
163
187
|
await this.collection.update(notificationId, { isRead: true });
|
|
164
188
|
}
|
|
165
189
|
/**
|
|
166
|
-
* Marca todas las notificaciones como leídas.
|
|
190
|
+
* Marca todas las notificaciones no leídas como leídas (batch write).
|
|
167
191
|
*/
|
|
168
192
|
async markAllAsRead() {
|
|
169
193
|
if (!this.collection)
|
|
@@ -171,7 +195,8 @@ export class NotificationsService {
|
|
|
171
195
|
const unread = await this.collection.query({
|
|
172
196
|
where: [{ field: 'isRead', operator: '==', value: false }],
|
|
173
197
|
});
|
|
174
|
-
|
|
198
|
+
const ids = unread.map(n => n.id).filter(Boolean);
|
|
199
|
+
await this.collection.batchUpdate(ids, { isRead: true });
|
|
175
200
|
}
|
|
176
201
|
/**
|
|
177
202
|
* Elimina una notificación.
|
|
@@ -182,13 +207,14 @@ export class NotificationsService {
|
|
|
182
207
|
await this.collection.delete(notificationId);
|
|
183
208
|
}
|
|
184
209
|
/**
|
|
185
|
-
* Elimina todas las notificaciones del usuario.
|
|
210
|
+
* Elimina todas las notificaciones del usuario (batch delete).
|
|
186
211
|
*/
|
|
187
212
|
async deleteAll() {
|
|
188
213
|
if (!this.collection)
|
|
189
214
|
return;
|
|
190
215
|
const all = await this.collection.getAll();
|
|
191
|
-
|
|
216
|
+
const ids = all.map(n => n.id).filter(Boolean);
|
|
217
|
+
await this.collection.batchDelete(ids);
|
|
192
218
|
}
|
|
193
219
|
/**
|
|
194
220
|
* Limpia el estado del servicio.
|
|
@@ -207,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
207
233
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.FirestoreCollectionFactory, decorators: [{
|
|
208
234
|
type: Optional
|
|
209
235
|
}] }] });
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUF1Qm5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CLFlBQ1UsUUFBa0IsRUFDTixpQkFBNkM7UUFEekQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNOLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFSM0QsZUFBVSxHQUFpRCxJQUFJLENBQUM7UUFDaEUsa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBRTVDLDhEQUE4RDtRQUN0RCxnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFNN0MsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSyx1QkFBdUI7UUFDN0Isb0NBQW9DO1FBQ3BDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCw4REFBOEQ7WUFDOUQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcs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LENBQUMsVUFBVTtZQUFFLE9BQU87UUFDN0IsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFN0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7K0dBbE1VLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVU3QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOb3RpZmljYXRpb25zIFNlcnZpY2VcbiAqXG4gKiBTZXJ2aWNpbyBwYXJhIGxlZXIgbm90aWZpY2FjaW9uZXMgZGVzZGUgRmlyZXN0b3JlLlxuICogRWwgYmFja2VuZCBlc2NyaWJlIGxhcyBub3RpZmljYWNpb25lcywgZWwgZnJvbnRlbmQgc29sbyBsYXMgbGVlIHkgYWN0dWFsaXphIGVzdGFkby5cbiAqXG4gKiBTZSBhdXRvLWluaWNpYWxpemEgY3VhbmRvIEF1dGhTZXJ2aWNlIHRpZW5lIHVuIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKiBUYW1iacOpbiBwdWVkZSBpbmljaWFsaXphcnNlIG1hbnVhbG1lbnRlIGNvbiBgaW5pdGlhbGl6ZSh1c2VySWQpYC5cbiAqL1xuXG5pbXBvcnQgeyBlZmZlY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5LCBUeXBlZENvbGxlY3Rpb24gfSBmcm9tICcuL2ZpcmVzdG9yZS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IEZpcmVzdG9yZURvY3VtZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRG9jdW1lbnRvIGRlIG5vdGlmaWNhY2nDs24gZW4gRmlyZXN0b3JlLlxuICogRXN0cnVjdHVyYSBlc2NyaXRhIHBvciBlbCBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkRvY3VtZW50IGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQge1xuICAvKiogVMOtdHVsbyBkZSBsYSBub3RpZmljYWNpw7NuICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogQ3VlcnBvIGRlbCBtZW5zYWplICovXG4gIGJvZHk/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZGUgaW1hZ2VuICovXG4gIGltYWdlPzogc3RyaW5nO1xuICAvKiogRGF0b3MgcGVyc29uYWxpemFkb3MgKGVqOiByb3V0ZSwgYWN0aW9uVHlwZSkgKi9cbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBUaXBvIGRlIG5vdGlmaWNhY2nDs24gKi9cbiAgdHlwZT86ICdmY20nIHwgJ3N5c3RlbScgfCAncmVtaW5kZXInIHwgc3RyaW5nO1xuICAvKiogU2kgbGEgbm90aWZpY2FjacOzbiBmdWUgbGXDrWRhICovXG4gIGlzUmVhZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGxlZXIgbm90aWZpY2FjaW9uZXMgZGVzZGUgRmlyZXN0b3JlLlxuICpcbiAqIFNlIGF1dG8taW5pY2lhbGl6YSBjdWFuZG8gQXV0aFNlcnZpY2UgdGllbmUgdW4gdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAqIE5vIHJlcXVpZXJlIGxsYW1hciBhIGBpbml0aWFsaXplKClgIG1hbnVhbG1lbnRlIHNpIEF1dGhTZXJ2aWNlIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDb24gQXV0aFNlcnZpY2UgY29uZmlndXJhZG86IGF1dG8taW5pY2lhbGl6YWNpw7NuXG4gKiAvLyBTb2xvIGlueWVjdGFyIHkgdXNhciBkaXJlY3RhbWVudGVcbiAqIHByaXZhdGUgbm90aWZpY2F0aW9ucyA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gKlxuICogbm90aWZpY2F0aW9ucyQgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZ2V0QWxsKCk7XG4gKiB1bnJlYWRDb3VudCQgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZ2V0VW5yZWFkQ291bnQoKTtcbiAqXG4gKiAvLyBTaW4gQXV0aFNlcnZpY2U6IGluaWNpYWxpemFjacOzbiBtYW51YWxcbiAqIHRoaXMubm90aWZpY2F0aW9ucy5pbml0aWFsaXplKHVzZXJJZCk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU2VydmljZSB7XG4gIHByaXZhdGUgY29sbGVjdGlvbjogVHlwZWRDb2xsZWN0aW9uPE5vdGlmaWNhdGlvbkRvY3VtZW50PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRVc2VySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8vIElueWVjY2nDs24gb3BjaW9uYWwgLSBBdXRoU2VydmljZSBwdWVkZSBubyBlc3RhciBjb25maWd1cmFkb1xuICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29sbGVjdGlvbkZhY3Rvcnk6IEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5XG4gICkge1xuICAgIC8vIEludGVudGFyIG9idGVuZXIgQXV0aFNlcnZpY2UgZGUgZm9ybWEgbGF6eSAocHVlZGUgbm8gZXN0YXIgY29uZmlndXJhZG8pXG4gICAgdGhpcy5zZXR1cEF1dG9Jbml0aWFsaXphdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYSBhdXRvLWluaWNpYWxpemFjacOzbiBvYnNlcnZhbmRvIGVsIGVzdGFkbyBkZSBBdXRoU2VydmljZS5cbiAgICogU2UgZWplY3V0YSBlbiBlbCBjb250ZXh0byBkZWwgaW5qZWN0b3IgcGFyYSBwb2RlciB1c2FyIGVmZmVjdCgpLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cEF1dG9Jbml0aWFsaXphdGlvbigpOiB2b2lkIHtcbiAgICAvLyBPYnRlbmVyIEF1dGhTZXJ2aWNlIGRlIGZvcm1hIGxhenlcbiAgICB0cnkge1xuICAgICAgdGhpcy5hdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlLCBudWxsKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEF1dGhTZXJ2aWNlIG5vIGVzdMOhIGNvbmZpZ3VyYWRvLCBubyBoYXkgYXV0by1pbmljaWFsaXphY2nDs25cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBVc2FyIHJ1bkluSW5qZWN0aW9uQ29udGV4dCBwYXJhIHBvZGVyIGNyZWFyIGVsIGVmZmVjdFxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZSEudXNlcigpO1xuXG4gICAgICAgIGlmICh1c2VyPy51c2VySWQgJiYgdGhpcy5jdXJyZW50VXNlcklkICE9PSB1c2VyLnVzZXJJZCkge1xuICAgICAgICAgIC8vIFVzdWFyaW8gYXV0ZW50aWNhZG86IGluaWNpYWxpemFyIGNvbiBzdSBJRFxuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSh1c2VyLnVzZXJJZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXVzZXIgJiYgdGhpcy5jdXJyZW50VXNlcklkKSB7XG4gICAgICAgICAgLy8gTG9nb3V0OiBsaW1waWFyIGVzdGFkb1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBlbCBzZXJ2aWNpbyBwYXJhIHVuIHVzdWFyaW8gZXNwZWPDrWZpY28uXG4gICAqXG4gICAqIE5PVEE6IFNlIGxsYW1hIGF1dG9tw6F0aWNhbWVudGUgc2kgQXV0aFNlcnZpY2UgZXN0w6EgY29uZmlndXJhZG8uXG4gICAqIFNvbG8gdXNhciBtYW51YWxtZW50ZSBzaSBBdXRoU2VydmljZSBubyBlc3TDoSBkaXNwb25pYmxlIG8gc2UgbmVjZXNpdGFcbiAgICogdW4gdXNlcklkIGRpZmVyZW50ZSBhbCBkZWwgdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAgICovXG4gIGluaXRpYWxpemUodXNlcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbkZhY3RvcnkpIHtcbiAgICAgIGNvbnNvbGUud2FybignW05vdGlmaWNhdGlvbnNdIEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5IG5vdCBhdmFpbGFibGUuIEVuc3VyZSBwcm92aWRlVmFsdGVjaEZpcmViYXNlKCkgaXMgY29uZmlndXJlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB1c2VySWQ7XG5cbiAgICAvLyBQYXRoIHJlbGF0aXZvIC0gRmlyZXN0b3JlU2VydmljZSBhZ3JlZ2EgYXV0b23DoXRpY2FtZW50ZSBhcHBzL3thcHBJZH0vXG4gICAgLy8gTk8gYWdyZWdhciBhcHBzLyBhcXXDrSBwYXJhIGV2aXRhciBkb2JsZSBwcmVmaWpvXG4gICAgY29uc3QgYmFzZVBhdGggPSBgdXNlcnMvJHt1c2VySWR9L25vdGlmaWNhdGlvbnNgO1xuXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uRmFjdG9yeS5jcmVhdGU8Tm90aWZpY2F0aW9uRG9jdW1lbnQ+KFxuICAgICAgYmFzZVBhdGgsXG4gICAgICB7IHRpbWVzdGFtcHM6IHRydWUgfVxuICAgICk7XG5cbiAgICBjb25zb2xlLmxvZygnW05vdGlmaWNhdGlvbnNdIEluaXRpYWxpemVkIHdpdGggcGF0aDonLCBiYXNlUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgZWwgc2VydmljaW8gZXN0w6EgaW5pY2lhbGl6YWRvLlxuICAgKi9cbiAgZ2V0IGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbiAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIElEIGRlbCB1c3VhcmlvIGFjdHVhbC5cbiAgICovXG4gIGdldCB1c2VySWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXJJZDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMRUNUVVJBXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZGFzIGxhcyBub3RpZmljYWNpb25lcyBvcmRlbmFkYXMgcG9yIGZlY2hhIGRlc2NlbmRlbnRlLlxuICAgKiBSZWFsLXRpbWU6IHNlIGFjdHVhbGl6YSBhdXRvbcOhdGljYW1lbnRlIGN1YW5kbyBjYW1iaWFuIGxvcyBkYXRvcy5cbiAgICovXG4gIGdldEFsbCgpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkRvY3VtZW50W10+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuIG9mKFtdKTtcblxuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24ud2F0Y2hBbGwoe1xuICAgICAgb3JkZXJCeTogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdkZXNjJyB9XSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZGFzIGxhcyBub3RpZmljYWNpb25lcyAob25lLXRpbWUgZmV0Y2ggc2luIGxpc3RlbmVyKS5cbiAgICogw5p0aWwgcGFyYSBjYXJnYXMgaW5pY2lhbGVzIHNpbiBuZWNlc2lkYWQgZGUgdXBkYXRlcyBlbiB0aWVtcG8gcmVhbC5cbiAgICovXG4gIGFzeW5jIGdldEFsbE9uY2UoKTogUHJvbWlzZTxOb3RpZmljYXRpb25Eb2N1bWVudFtdPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybiBbXTtcblxuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZ2V0QWxsT25jZSh7XG4gICAgICBvcmRlckJ5OiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGRpcmVjdGlvbjogJ2Rlc2MnIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgc29sbyBub3RpZmljYWNpb25lcyBubyBsZcOtZGFzLlxuICAgKi9cbiAgZ2V0VW5yZWFkKCk6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uRG9jdW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbCgpLnBpcGUoXG4gICAgICBtYXAobm90aWZpY2F0aW9ucyA9PiBub3RpZmljYXRpb25zLmZpbHRlcihuID0+ICFuLmlzUmVhZCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdWVudGEgbm90aWZpY2FjaW9uZXMgbm8gbGXDrWRhcy5cbiAgICogw5p0aWwgcGFyYSBiYWRnZXMgZW4gVUkuXG4gICAqL1xuICBnZXRVbnJlYWRDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldFVucmVhZCgpLnBpcGUobWFwKG4gPT4gbi5sZW5ndGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHVuYSBub3RpZmljYWNpw7NuIHBvciBJRC5cbiAgICovXG4gIGFzeW5jIGdldEJ5SWQobm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Tm90aWZpY2F0aW9uRG9jdW1lbnQgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZ2V0QnlJZChub3RpZmljYXRpb25JZCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQUNDSU9ORVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE1hcmNhIHVuYSBub3RpZmljYWNpw7NuIGNvbW8gbGXDrWRhLlxuICAgKi9cbiAgYXN5bmMgbWFya0FzUmVhZChub3RpZmljYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLmNvbGxlY3Rpb24udXBkYXRlKG5vdGlmaWNhdGlvbklkLCB7IGlzUmVhZDogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJjYSB0b2RhcyBsYXMgbm90aWZpY2FjaW9uZXMgY29tbyBsZcOtZGFzLlxuICAgKi9cbiAgYXN5bmMgbWFya0FsbEFzUmVhZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgdW5yZWFkID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5KHtcbiAgICAgIHdoZXJlOiBbeyBmaWVsZDogJ2lzUmVhZCcsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZmFsc2UgfV0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVucmVhZC5tYXAobiA9PiB0aGlzLmNvbGxlY3Rpb24hLnVwZGF0ZShuLmlkISwgeyBpc1JlYWQ6IHRydWUgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuYSBub3RpZmljYWNpw7NuLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5kZWxldGUobm90aWZpY2F0aW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdG9kYXMgbGFzIG5vdGlmaWNhY2lvbmVzIGRlbCB1c3VhcmlvLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBhbGwgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZ2V0QWxsKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYWxsLm1hcChuID0+IHRoaXMuY29sbGVjdGlvbiEuZGVsZXRlKG4uaWQhKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBlbCBlc3RhZG8gZGVsIHNlcnZpY2lvLlxuICAgKiDDmnRpbCBwYXJhIGxvZ291dC5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gbnVsbDtcbiAgfVxufVxuIl19
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFJbkQsb0RBQW9EO0FBQ3BELE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQXFCekI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFDVSxRQUFrQixFQUNOLGlCQUE2QztRQUR6RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ04sc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE0QjtRQVIzRCxlQUFVLEdBQWlELElBQUksQ0FBQztRQUNoRSxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFFNUMsOERBQThEO1FBQ3RELGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQU03QywwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHVCQUF1QjtRQUM3QixvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLDhEQUE4RDtZQUM5RCxP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UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDOytHQXJOVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFVN0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTm90aWZpY2F0aW9ucyBTZXJ2aWNlXG4gKlxuICogU2VydmljaW8gcGFyYSBsZWVyIG5vdGlmaWNhY2lvbmVzIGRlc2RlIEZpcmVzdG9yZS5cbiAqIEVsIGJhY2tlbmQgZXNjcmliZSBsYXMgbm90aWZpY2FjaW9uZXMsIGVsIGZyb250ZW5kIHNvbG8gbGFzIGxlZSB5IGFjdHVhbGl6YSBlc3RhZG8uXG4gKlxuICogU2UgYXV0by1pbmljaWFsaXphIGN1YW5kbyBBdXRoU2VydmljZSB0aWVuZSB1biB1c3VhcmlvIGF1dGVudGljYWRvLlxuICogVGFtYmnDqW4gcHVlZGUgaW5pY2lhbGl6YXJzZSBtYW51YWxtZW50ZSBjb24gYGluaXRpYWxpemUodXNlcklkKWAuXG4gKi9cblxuaW1wb3J0IHsgZWZmZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT3B0aW9uYWwsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVDb2xsZWN0aW9uRmFjdG9yeSwgVHlwZWRDb2xsZWN0aW9uIH0gZnJvbSAnLi9maXJlc3RvcmUtY29sbGVjdGlvbic7XG5pbXBvcnQgeyBGaXJlc3RvcmVEb2N1bWVudCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKiogTMOtbWl0ZSBwb3IgZGVmZWN0byBkZSBub3RpZmljYWNpb25lcyBhIGNhcmdhciAqL1xuY29uc3QgREVGQVVMVF9MSU1JVCA9IDUwO1xuXG4vKipcbiAqIERvY3VtZW50byBkZSBub3RpZmljYWNpw7NuIGVuIEZpcmVzdG9yZS5cbiAqIEVzdHJ1Y3R1cmEgZXNjcml0YSBwb3IgZWwgYmFja2VuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Eb2N1bWVudCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50IHtcbiAgLyoqIFTDrXR1bG8gZGUgbGEgbm90aWZpY2FjacOzbiAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqIEN1ZXJwbyBkZWwgbWVuc2FqZSAqL1xuICBib2R5Pzogc3RyaW5nO1xuICAvKiogVVJMIGRlIGltYWdlbiAqL1xuICBpbWFnZT86IHN0cmluZztcbiAgLyoqIERhdG9zIHBlcnNvbmFsaXphZG9zIChlajogcm91dGUsIGFjdGlvblR5cGUpICovXG4gIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogVGlwbyBkZSBub3RpZmljYWNpw7NuICovXG4gIHR5cGU/OiAnZmNtJyB8ICdzeXN0ZW0nIHwgJ3JlbWluZGVyJyB8IHN0cmluZztcbiAgLyoqIFNpIGxhIG5vdGlmaWNhY2nDs24gZnVlIGxlw61kYSAqL1xuICBpc1JlYWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBsZWVyIG5vdGlmaWNhY2lvbmVzIGRlc2RlIEZpcmVzdG9yZS5cbiAqXG4gKiBTZSBhdXRvLWluaWNpYWxpemEgY3VhbmRvIEF1dGhTZXJ2aWNlIHRpZW5lIHVuIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKiBObyByZXF1aWVyZSBsbGFtYXIgYSBgaW5pdGlhbGl6ZSgpYCBtYW51YWxtZW50ZSBzaSBBdXRoU2VydmljZSBlc3TDoSBjb25maWd1cmFkby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ29uIEF1dGhTZXJ2aWNlIGNvbmZpZ3VyYWRvOiBhdXRvLWluaWNpYWxpemFjacOzblxuICogLy8gU29sbyBpbnllY3RhciB5IHVzYXIgZGlyZWN0YW1lbnRlXG4gKiBwcml2YXRlIG5vdGlmaWNhdGlvbnMgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICpcbiAqIG5vdGlmaWNhdGlvbnMkID0gdGhpcy5ub3RpZmljYXRpb25zLmdldEFsbCgpO1xuICogdW5yZWFkQ291bnQkID0gdGhpcy5ub3RpZmljYXRpb25zLmdldFVucmVhZENvdW50KCk7XG4gKlxuICogLy8gU2luIEF1dGhTZXJ2aWNlOiBpbmljaWFsaXphY2nDs24gbWFudWFsXG4gKiB0aGlzLm5vdGlmaWNhdGlvbnMuaW5pdGlhbGl6ZSh1c2VySWQpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uc1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbGxlY3Rpb246IFR5cGVkQ29sbGVjdGlvbjxOb3RpZmljYXRpb25Eb2N1bWVudD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50VXNlcklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvLyBJbnllY2Npw7NuIG9wY2lvbmFsIC0gQXV0aFNlcnZpY2UgcHVlZGUgbm8gZXN0YXIgY29uZmlndXJhZG9cbiAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbGxlY3Rpb25GYWN0b3J5OiBGaXJlc3RvcmVDb2xsZWN0aW9uRmFjdG9yeVxuICApIHtcbiAgICAvLyBJbnRlbnRhciBvYnRlbmVyIEF1dGhTZXJ2aWNlIGRlIGZvcm1hIGxhenkgKHB1ZWRlIG5vIGVzdGFyIGNvbmZpZ3VyYWRvKVxuICAgIHRoaXMuc2V0dXBBdXRvSW5pdGlhbGl6YXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmEgYXV0by1pbmljaWFsaXphY2nDs24gb2JzZXJ2YW5kbyBlbCBlc3RhZG8gZGUgQXV0aFNlcnZpY2UuXG4gICAqIFNlIGVqZWN1dGEgZW4gZWwgY29udGV4dG8gZGVsIGluamVjdG9yIHBhcmEgcG9kZXIgdXNhciBlZmZlY3QoKS5cbiAgICovXG4gIHByaXZhdGUgc2V0dXBBdXRvSW5pdGlhbGl6YXRpb24oKTogdm9pZCB7XG4gICAgLy8gT2J0ZW5lciBBdXRoU2VydmljZSBkZSBmb3JtYSBsYXp5XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBdXRoU2VydmljZSwgbnVsbCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBBdXRoU2VydmljZSBubyBlc3TDoSBjb25maWd1cmFkbywgbm8gaGF5IGF1dG8taW5pY2lhbGl6YWNpw7NuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVXNhciBydW5JbkluamVjdGlvbkNvbnRleHQgcGFyYSBwb2RlciBjcmVhciBlbCBlZmZlY3RcbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2UhLnVzZXIoKTtcblxuICAgICAgICBpZiAodXNlcj8udXNlcklkICYmIHRoaXMuY3VycmVudFVzZXJJZCAhPT0gdXNlci51c2VySWQpIHtcbiAgICAgICAgICAvLyBVc3VhcmlvIGF1dGVudGljYWRvOiBpbmljaWFsaXphciBjb24gc3UgSURcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemUodXNlci51c2VySWQpO1xuICAgICAgICB9IGVsc2UgaWYgKCF1c2VyICYmIHRoaXMuY3VycmVudFVzZXJJZCkge1xuICAgICAgICAgIC8vIExvZ291dDogbGltcGlhciBlc3RhZG9cbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gcGFyYSB1biB1c3VhcmlvIGVzcGVjw61maWNvLlxuICAgKlxuICAgKiBOT1RBOiBTZSBsbGFtYSBhdXRvbcOhdGljYW1lbnRlIHNpIEF1dGhTZXJ2aWNlIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICAgKiBTb2xvIHVzYXIgbWFudWFsbWVudGUgc2kgQXV0aFNlcnZpY2Ugbm8gZXN0w6EgZGlzcG9uaWJsZSBvIHNlIG5lY2VzaXRhXG4gICAqIHVuIHVzZXJJZCBkaWZlcmVudGUgYWwgZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gICAqL1xuICBpbml0aWFsaXplKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb25GYWN0b3J5KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdbTm90aWZpY2F0aW9uc10gRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3Rvcnkgbm90IGF2YWlsYWJsZS4gRW5zdXJlIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UoKSBpcyBjb25maWd1cmVkLidcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gdXNlcklkO1xuXG4gICAgLy8gUGF0aCByZWxhdGl2byAtIEZpcmVzdG9yZVNlcnZpY2UgYWdyZWdhIGF1dG9tw6F0aWNhbWVudGUgYXBwcy97YXBwSWR9L1xuICAgIC8vIE5PIGFncmVnYXIgYXBwcy8gYXF1w60gcGFyYSBldml0YXIgZG9ibGUgcHJlZmlqb1xuICAgIGNvbnN0IGJhc2VQYXRoID0gYHVzZXJzLyR7dXNlcklkfS9ub3RpZmljYXRpb25zYDtcblxuICAgIHRoaXMuY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbkZhY3RvcnkuY3JlYXRlPE5vdGlmaWNhdGlvbkRvY3VtZW50PihiYXNlUGF0aCwge1xuICAgICAgdGltZXN0YW1wczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKCdbTm90aWZpY2F0aW9uc10gSW5pdGlhbGl6ZWQgd2l0aCBwYXRoOicsIGJhc2VQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBlbCBzZXJ2aWNpbyBlc3TDoSBpbmljaWFsaXphZG8uXG4gICAqL1xuICBnZXQgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgSUQgZGVsIHVzdWFyaW8gYWN0dWFsLlxuICAgKi9cbiAgZ2V0IHVzZXJJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VXNlcklkO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExFQ1RVUkFcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbm90aWZpY2FjaW9uZXMgb3JkZW5hZGFzIHBvciBmZWNoYSBkZXNjZW5kZW50ZSAocmVhbC10aW1lKS5cbiAgICogU2UgYWN0dWFsaXphIGF1dG9tw6F0aWNhbWVudGUgY3VhbmRvIGNhbWJpYW4gbG9zIGRhdG9zLlxuICAgKlxuICAgKiBAcGFyYW0gbGltaXQgLSBNw6F4aW1vIGRlIG5vdGlmaWNhY2lvbmVzIGEgY2FyZ2FyIChkZWZhdWx0OiA1MClcbiAgICovXG4gIGdldEFsbChsaW1pdCA9IERFRkFVTFRfTElNSVQpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkRvY3VtZW50W10+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuIG9mKFtdKTtcblxuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24ud2F0Y2hBbGwoe1xuICAgICAgb3JkZXJCeTogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdkZXNjJyB9XSxcbiAgICAgIGxpbWl0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbm90aWZpY2FjaW9uZXMgKG9uZS10aW1lIGZldGNoIHNpbiBsaXN0ZW5lcikuXG4gICAqIMOadGlsIHBhcmEgY2FyZ2FzIGluaWNpYWxlcyBzaW4gbmVjZXNpZGFkIGRlIHVwZGF0ZXMgZW4gdGllbXBvIHJlYWwuXG4gICAqXG4gICAqIEBwYXJhbSBsaW1pdCAtIE3DoXhpbW8gZGUgbm90aWZpY2FjaW9uZXMgYSBjYXJnYXIgKGRlZmF1bHQ6IDUwKVxuICAgKi9cbiAgYXN5bmMgZ2V0QWxsT25jZShsaW1pdCA9IERFRkFVTFRfTElNSVQpOiBQcm9taXNlPE5vdGlmaWNhdGlvbkRvY3VtZW50W10+IHtcbiAgICBpZiAoIXRoaXMuY29sbGVjdGlvbikgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5nZXRBbGxPbmNlKHtcbiAgICAgIG9yZGVyQnk6IFt7IGZpZWxkOiAnY3JlYXRlZEF0JywgZGlyZWN0aW9uOiAnZGVzYycgfV0sXG4gICAgICBsaW1pdCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHNvbG8gbm90aWZpY2FjaW9uZXMgbm8gbGXDrWRhcyAocmVhbC10aW1lLCBmaWx0cmFkbyBzZXJ2ZXItc2lkZSkuXG4gICAqXG4gICAqIEBwYXJhbSBsaW1pdCAtIE3DoXhpbW8gZGUgbm90aWZpY2FjaW9uZXMgKGRlZmF1bHQ6IDUwKVxuICAgKi9cbiAgZ2V0VW5yZWFkKGxpbWl0ID0gREVGQVVMVF9MSU1JVCk6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uRG9jdW1lbnRbXT4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm4gb2YoW10pO1xuXG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi53YXRjaEFsbCh7XG4gICAgICB3aGVyZTogW3sgZmllbGQ6ICdpc1JlYWQnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZhbHNlIH1dLFxuICAgICAgb3JkZXJCeTogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdkZXNjJyB9XSxcbiAgICAgIGxpbWl0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEN1ZW50YSBub3RpZmljYWNpb25lcyBubyBsZcOtZGFzIChyZWFsLXRpbWUsIGZpbHRyYWRvIHNlcnZlci1zaWRlKS5cbiAgICogw5p0aWwgcGFyYSBiYWRnZXMgZW4gVUkuXG4gICAqL1xuICBnZXRVbnJlYWRDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm4gb2YoMCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uXG4gICAgICAud2F0Y2hBbGwoe1xuICAgICAgICB3aGVyZTogW3sgZmllbGQ6ICdpc1JlYWQnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZhbHNlIH1dLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcChuID0+IG4ubGVuZ3RoKSk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB1bmEgbm90aWZpY2FjacOzbiBwb3IgSUQuXG4gICAqL1xuICBhc3luYyBnZXRCeUlkKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPE5vdGlmaWNhdGlvbkRvY3VtZW50IHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmdldEJ5SWQobm90aWZpY2F0aW9uSWQpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEFDQ0lPTkVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBNYXJjYSB1bmEgbm90aWZpY2FjacOzbiBjb21vIGxlw61kYS5cbiAgICovXG4gIGFzeW5jIG1hcmtBc1JlYWQobm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uLnVwZGF0ZShub3RpZmljYXRpb25JZCwgeyBpc1JlYWQ6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFyY2EgdG9kYXMgbGFzIG5vdGlmaWNhY2lvbmVzIG5vIGxlw61kYXMgY29tbyBsZcOtZGFzIChiYXRjaCB3cml0ZSkuXG4gICAqL1xuICBhc3luYyBtYXJrQWxsQXNSZWFkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCB1bnJlYWQgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24ucXVlcnkoe1xuICAgICAgd2hlcmU6IFt7IGZpZWxkOiAnaXNSZWFkJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmYWxzZSB9XSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlkcyA9IHVucmVhZC5tYXAobiA9PiBuLmlkISkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5iYXRjaFVwZGF0ZShpZHMsIHsgaXNSZWFkOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW5hIG5vdGlmaWNhY2nDs24uXG4gICAqL1xuICBhc3luYyBkZWxldGUobm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb2xsZWN0aW9uKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmRlbGV0ZShub3RpZmljYXRpb25JZCk7XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSB0b2RhcyBsYXMgbm90aWZpY2FjaW9uZXMgZGVsIHVzdWFyaW8gKGJhdGNoIGRlbGV0ZSkuXG4gICAqL1xuICBhc3luYyBkZWxldGVBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbGxlY3Rpb24pIHJldHVybjtcblxuICAgIGNvbnN0IGFsbCA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbi5nZXRBbGwoKTtcbiAgICBjb25zdCBpZHMgPSBhbGwubWFwKG4gPT4gbi5pZCEpLmZpbHRlcihCb29sZWFuKTtcbiAgICBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uYmF0Y2hEZWxldGUoaWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgZWwgZXN0YWRvIGRlbCBzZXJ2aWNpby5cbiAgICogw5p0aWwgcGFyYSBsb2dvdXQuXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbGxlY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFVzZXJJZCA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -51,6 +51,24 @@ export function provideValtechI18n(config = {}) {
|
|
|
51
51
|
if (Object.keys(contentToRegister).length > 0) {
|
|
52
52
|
i18n.registerContentBulk(contentToRegister);
|
|
53
53
|
}
|
|
54
|
+
// Aplicar idioma según configuración
|
|
55
|
+
if (!mergedConfig.detectBrowserLanguage) {
|
|
56
|
+
// Sin detección de navegador: forzar idioma por defecto
|
|
57
|
+
i18n.setLanguage(mergedConfig.defaultLanguage);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Con detección: re-evaluar ahora que supportedLanguages está configurado
|
|
61
|
+
const stored = localStorage.getItem('app_lang');
|
|
62
|
+
if (!stored || !mergedConfig.supportedLanguages.includes(stored)) {
|
|
63
|
+
const browserLang = navigator.language.split('-')[0];
|
|
64
|
+
if (mergedConfig.supportedLanguages.includes(browserLang)) {
|
|
65
|
+
i18n.setLanguage(browserLang);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
i18n.setLanguage(mergedConfig.defaultLanguage);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
54
72
|
};
|
|
55
73
|
},
|
|
56
74
|
deps: [I18nService],
|
|
@@ -107,4 +125,4 @@ function deepMergeLanguagesContent(base, override) {
|
|
|
107
125
|
}
|
|
108
126
|
return result;
|
|
109
127
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLG1CQUFtQixFQUE0QyxNQUFNLFNBQVMsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBcUIsRUFBRTtJQUN4RCxNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUUzRCxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsSUFBaUIsRUFBRSxFQUFFO2dCQUNoQyxPQUFPLEdBQUcsRUFBRTtvQkFDVixnQ0FBZ0M7b0JBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFFdkQsbUNBQW1DO29CQUNuQyxJQUFJLGlCQUFpQixHQUFpQixFQUFFLENBQUM7b0JBRXpDLElBQUksWUFBWSxDQUFDLHFCQUFxQixLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUNqRCw0Q0FBNEM7d0JBQzVDLGlCQUFpQixHQUFHLGdCQUFnQixDQUNsQyx1QkFBdUIsRUFDdkIsWUFBWSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQzNCLENBQUM7b0JBQ0osQ0FBQzt5QkFBTSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDaEMsNkJBQTZCO3dCQUM3QixpQkFBaUIsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO29CQUMzQyxDQUFDO29CQUVELHNCQUFzQjtvQkFDdEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDOUMsQ0FBQztnQkFDSCxDQUFDLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO1lBQ25CLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFrQixFQUFFLFFBQXNCO0lBQ2xFLE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7SUFFaEMsdUNBQXVDO0lBQ3ZDLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3RCLDZDQUE2QztZQUM3QyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcseUJBQXlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7YUFBTSxDQUFDO1lBQ04sbUNBQW1DO1lBQ25DLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLHlCQUF5QixDQUNoQyxJQUFzQixFQUN0QixRQUEwQjtJQUUxQixNQUFNLE1BQU0sR0FBcUIsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO1FBQ3ZCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDcEIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztLQUN6QixDQUFrQixDQUFDO0lBRXBCLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgQVBQX0lOSVRJQUxJWkVSLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEkxOG5Db25maWcsIERFRkFVTFRfSTE4Tl9DT05GSUcsIENvbnRlbnRTdG9yZSwgTGFuZ3VhZ2VzQ29udGVudCwgSTE4bkxhbmcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkFMVEVDSF9ERUZBVUxUX0NPTlRFTlQgfSBmcm9tICcuL2RlZmF1bHQtY29udGVudCc7XG5cbi8qKlxuICogQ29uZmlndXJhIGVsIHNpc3RlbWEgZGUgaW50ZXJuYWNpb25hbGl6YWNpw7NuIGRlIFZhbHRlY2ggQ29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpw7NuIGRlIGkxOG5cbiAqIEByZXR1cm5zIFByb3ZpZGVycyBwYXJhIGFncmVnYXIgZW4gYXBwLmNvbmZpZy50c1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBhcHAuY29uZmlnLnRzXG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEkxOG4gfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICogaW1wb3J0IHsgR0xPQkFMX0NPTlRFTlQgfSBmcm9tICcuL2kxOG4vX2dsb2JhbCc7XG4gKiBpbXBvcnQgeyBMT0dJTl9DT05URU5UIH0gZnJvbSAnLi9pMThuL2xvZ2luLmkxOG4nO1xuICpcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlVmFsdGVjaEkxOG4oe1xuICogICAgICAgZGVmYXVsdExhbmd1YWdlOiAnZXMnLFxuICogICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBbJ2VzJywgJ2VuJ10sXG4gKiAgICAgICBkZXRlY3RCcm93c2VyTGFuZ3VhZ2U6IHRydWUsXG4gKiAgICAgICBjb250ZW50OiB7XG4gKiAgICAgICAgICdfZ2xvYmFsJzogR0xPQkFMX0NPTlRFTlQsXG4gKiAgICAgICAgICdMb2dpbic6IExPR0lOX0NPTlRFTlQsXG4gKiAgICAgICB9XG4gKiAgICAgfSksXG4gKiAgIF1cbiAqIH07XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVmFsdGVjaEkxOG4oY29uZmlnOiBJMThuQ29uZmlnID0ge30pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IG1lcmdlZENvbmZpZyA9IHsgLi4uREVGQVVMVF9JMThOX0NPTkZJRywgLi4uY29uZmlnIH07XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKGkxOG46IEkxOG5TZXJ2aWNlKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgLy8gQ29uZmlndXJhciBpZGlvbWFzIHNvcG9ydGFkb3NcbiAgICAgICAgICBpMThuLnNldEkxOG5MYW5ndWFnZXMobWVyZ2VkQ29uZmlnLnN1cHBvcnRlZExhbmd1YWdlcyk7XG5cbiAgICAgICAgICAvLyBEZXRlcm1pbmFyIGNvbnRlbmlkbyBhIHJlZ2lzdHJhclxuICAgICAgICAgIGxldCBjb250ZW50VG9SZWdpc3RlcjogQ29udGVudFN0b3JlID0ge307XG5cbiAgICAgICAgICBpZiAobWVyZ2VkQ29uZmlnLmluY2x1ZGVEZWZhdWx0Q29udGVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIC8vIE1lcmdlOiBkZWZhdWx0cyArIHVzZXIgY29uZmlnICh1c2VyIGdhbmEpXG4gICAgICAgICAgICBjb250ZW50VG9SZWdpc3RlciA9IGRlZXBNZXJnZUNvbnRlbnQoXG4gICAgICAgICAgICAgIFZBTFRFQ0hfREVGQVVMVF9DT05URU5ULFxuICAgICAgICAgICAgICBtZXJnZWRDb25maWcuY29udGVudCB8fCB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lcmdlZENvbmZpZy5jb250ZW50KSB7XG4gICAgICAgICAgICAvLyBTb2xvIGNvbnRlbmlkbyBkZWwgdXN1YXJpb1xuICAgICAgICAgICAgY29udGVudFRvUmVnaXN0ZXIgPSBtZXJnZWRDb25maWcuY29udGVudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBSZWdpc3RyYXIgY29udGVuaWRvXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGNvbnRlbnRUb1JlZ2lzdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpMThuLnJlZ2lzdGVyQ29udGVudEJ1bGsoY29udGVudFRvUmVnaXN0ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbSTE4blNlcnZpY2VdLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSk7XG59XG5cbi8qKlxuICogRGVlcCBtZXJnZSBkZSBDb250ZW50U3RvcmUuXG4gKiBFbCBjb250ZW5pZG8gZGUgYG92ZXJyaWRlYCBzb2JyZXNjcmliZSBrZXlzIGVzcGVjw61maWNhcyBkZSBgYmFzZWAuXG4gKlxuICogQHBhcmFtIGJhc2UgLSBDb250ZW5pZG8gYmFzZSAoZGVmYXVsdHMgZGUgdmFsdGVjaC1jb21wb25lbnRzKVxuICogQHBhcmFtIG92ZXJyaWRlIC0gQ29udGVuaWRvIGRlbCB1c3VhcmlvIHF1ZSBzb2JyZXNjcmliZVxuICogQHJldHVybnMgQ29udGVudFN0b3JlIG1lcmdlYWRvXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGJhc2UgPSB7IF9nbG9iYWw6IHsgZXM6IHsgb2s6ICdBY2VwdGFyJyB9IH0gfTtcbiAqIGNvbnN0IG92ZXJyaWRlID0geyBfZ2xvYmFsOiB7IGVzOiB7IG9rOiAnRGFsZScgfSB9IH07XG4gKiAvLyBSZXN1bHRhZG86IHsgX2dsb2JhbDogeyBlczogeyBvazogJ0RhbGUnIH0gfSB9XG4gKi9cbmZ1bmN0aW9uIGRlZXBNZXJnZUNvbnRlbnQoYmFzZTogQ29udGVudFN0b3JlLCBvdmVycmlkZTogQ29udGVudFN0b3JlKTogQ29udGVudFN0b3JlIHtcbiAgY29uc3QgcmVzdWx0OiBDb250ZW50U3RvcmUgPSB7fTtcblxuICAvLyBDb3BpYXIgdG9kb3MgbG9zIG5hbWVzcGFjZXMgZGVsIGJhc2VcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgT2JqZWN0LmtleXMoYmFzZSkpIHtcbiAgICByZXN1bHRbbmFtZXNwYWNlXSA9IGRlZXBNZXJnZUxhbmd1YWdlc0NvbnRlbnQoYmFzZVtuYW1lc3BhY2VdLCB7fSk7XG4gIH1cblxuICAvLyBNZXJnZWFyIG5hbWVzcGFjZXMgZGVsIG92ZXJyaWRlXG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIE9iamVjdC5rZXlzKG92ZXJyaWRlKSkge1xuICAgIGlmIChyZXN1bHRbbmFtZXNwYWNlXSkge1xuICAgICAgLy8gTmFtZXNwYWNlIGV4aXN0ZSBlbiBiYXNlLCBoYWNlciBkZWVwIG1lcmdlXG4gICAgICByZXN1bHRbbmFtZXNwYWNlXSA9IGRlZXBNZXJnZUxhbmd1YWdlc0NvbnRlbnQocmVzdWx0W25hbWVzcGFjZV0sIG92ZXJyaWRlW25hbWVzcGFjZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOYW1lc3BhY2UgbnVldm8sIGNvcGlhciBjb21wbGV0b1xuICAgICAgcmVzdWx0W25hbWVzcGFjZV0gPSBkZWVwTWVyZ2VMYW5ndWFnZXNDb250ZW50KHt9LCBvdmVycmlkZVtuYW1lc3BhY2VdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERlZXAgbWVyZ2UgZGUgTGFuZ3VhZ2VzQ29udGVudCAodW4gbmFtZXNwYWNlKS5cbiAqL1xuZnVuY3Rpb24gZGVlcE1lcmdlTGFuZ3VhZ2VzQ29udGVudChcbiAgYmFzZTogTGFuZ3VhZ2VzQ29udGVudCxcbiAgb3ZlcnJpZGU6IExhbmd1YWdlc0NvbnRlbnRcbik6IExhbmd1YWdlc0NvbnRlbnQge1xuICBjb25zdCByZXN1bHQ6IExhbmd1YWdlc0NvbnRlbnQgPSB7fTtcbiAgY29uc3QgYWxsTGFuZ3MgPSBuZXcgU2V0KFtcbiAgICAuLi5PYmplY3Qua2V5cyhiYXNlKSxcbiAgICAuLi5PYmplY3Qua2V5cyhvdmVycmlkZSksXG4gIF0pIGFzIFNldDxJMThuTGFuZz47XG5cbiAgZm9yIChjb25zdCBsYW5nIG9mIGFsbExhbmdzKSB7XG4gICAgcmVzdWx0W2xhbmddID0ge1xuICAgICAgLi4uKGJhc2VbbGFuZ10gfHwge30pLFxuICAgICAgLi4uKG92ZXJyaWRlW2xhbmddIHx8IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLG1CQUFtQixFQUE0QyxNQUFNLFNBQVMsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBcUIsRUFBRTtJQUN4RCxNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUUzRCxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsSUFBaUIsRUFBRSxFQUFFO2dCQUNoQyxPQUFPLEdBQUcsRUFBRTtvQkFDVixnQ0FBZ0M7b0JBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFFdkQsbUNBQW1DO29CQUNuQyxJQUFJLGlCQUFpQixHQUFpQixFQUFFLENBQUM7b0JBRXpDLElBQUksWUFBWSxDQUFDLHFCQUFxQixLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUNqRCw0Q0FBNEM7d0JBQzVDLGlCQUFpQixHQUFHLGdCQUFnQixDQUNsQyx1QkFBdUIsRUFDdkIsWUFBWSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQzNCLENBQUM7b0JBQ0osQ0FBQzt5QkFBTSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDaEMsNkJBQTZCO3dCQUM3QixpQkFB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USxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgQVBQX0lOSVRJQUxJWkVSLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEkxOG5Db25maWcsIERFRkFVTFRfSTE4Tl9DT05GSUcsIENvbnRlbnRTdG9yZSwgTGFuZ3VhZ2VzQ29udGVudCwgSTE4bkxhbmcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkFMVEVDSF9ERUZBVUxUX0NPTlRFTlQgfSBmcm9tICcuL2RlZmF1bHQtY29udGVudCc7XG5cbi8qKlxuICogQ29uZmlndXJhIGVsIHNpc3RlbWEgZGUgaW50ZXJuYWNpb25hbGl6YWNpw7NuIGRlIFZhbHRlY2ggQ29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpw7NuIGRlIGkxOG5cbiAqIEByZXR1cm5zIFByb3ZpZGVycyBwYXJhIGFncmVnYXIgZW4gYXBwLmNvbmZpZy50c1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBhcHAuY29uZmlnLnRzXG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEkxOG4gfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICogaW1wb3J0IHsgR0xPQkFMX0NPTlRFTlQgfSBmcm9tICcuL2kxOG4vX2dsb2JhbCc7XG4gKiBpbXBvcnQgeyBMT0dJTl9DT05URU5UIH0gZnJvbSAnLi9pMThuL2xvZ2luLmkxOG4nO1xuICpcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlVmFsdGVjaEkxOG4oe1xuICogICAgICAgZGVmYXVsdExhbmd1YWdlOiAnZXMnLFxuICogICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBbJ2VzJywgJ2VuJ10sXG4gKiAgICAgICBkZXRlY3RCcm93c2VyTGFuZ3VhZ2U6IHRydWUsXG4gKiAgICAgICBjb250ZW50OiB7XG4gKiAgICAgICAgICdfZ2xvYmFsJzogR0xPQkFMX0NPTlRFTlQsXG4gKiAgICAgICAgICdMb2dpbic6IExPR0lOX0NPTlRFTlQsXG4gKiAgICAgICB9XG4gKiAgICAgfSksXG4gKiAgIF1cbiAqIH07XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVmFsdGVjaEkxOG4oY29uZmlnOiBJMThuQ29uZmlnID0ge30pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IG1lcmdlZENvbmZpZyA9IHsgLi4uREVGQVVMVF9JMThOX0NPTkZJRywgLi4uY29uZmlnIH07XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKGkxOG46IEkxOG5TZXJ2aWNlKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgLy8gQ29uZmlndXJhciBpZGlvbWFzIHNvcG9ydGFkb3NcbiAgICAgICAgICBpMThuLnNldEkxOG5MYW5ndWFnZXMobWVyZ2VkQ29uZmlnLnN1cHBvcnRlZExhbmd1YWdlcyk7XG5cbiAgICAgICAgICAvLyBEZXRlcm1pbmFyIGNvbnRlbmlkbyBhIHJlZ2lzdHJhclxuICAgICAgICAgIGxldCBjb250ZW50VG9SZWdpc3RlcjogQ29udGVudFN0b3JlID0ge307XG5cbiAgICAgICAgICBpZiAobWVyZ2VkQ29uZmlnLmluY2x1ZGVEZWZhdWx0Q29udGVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIC8vIE1lcmdlOiBkZWZhdWx0cyArIHVzZXIgY29uZmlnICh1c2VyIGdhbmEpXG4gICAgICAgICAgICBjb250ZW50VG9SZWdpc3RlciA9IGRlZXBNZXJnZUNvbnRlbnQoXG4gICAgICAgICAgICAgIFZBTFRFQ0hfREVGQVVMVF9DT05URU5ULFxuICAgICAgICAgICAgICBtZXJnZWRDb25maWcuY29udGVudCB8fCB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lcmdlZENvbmZpZy5jb250ZW50KSB7XG4gICAgICAgICAgICAvLyBTb2xvIGNvbnRlbmlkbyBkZWwgdXN1YXJpb1xuICAgICAgICAgICAgY29udGVudFRvUmVnaXN0ZXIgPSBtZXJnZWRDb25maWcuY29udGVudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBSZWdpc3RyYXIgY29udGVuaWRvXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGNvbnRlbnRUb1JlZ2lzdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpMThuLnJlZ2lzdGVyQ29udGVudEJ1bGsoY29udGVudFRvUmVnaXN0ZXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEFwbGljYXIgaWRpb21hIHNlZ8O6biBjb25maWd1cmFjacOzblxuICAgICAgICAgIGlmICghbWVyZ2VkQ29uZmlnLmRldGVjdEJyb3dzZXJMYW5ndWFnZSkge1xuICAgICAgICAgICAgLy8gU2luIGRldGVjY2nDs24gZGUgbmF2ZWdhZG9yOiBmb3J6YXIgaWRpb21hIHBvciBkZWZlY3RvXG4gICAgICAgICAgICBpMThuLnNldExhbmd1YWdlKG1lcmdlZENvbmZpZy5kZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDb24gZGV0ZWNjacOzbjogcmUtZXZhbHVhciBhaG9yYSBxdWUgc3VwcG9ydGVkTGFuZ3VhZ2VzIGVzdMOhIGNvbmZpZ3VyYWRvXG4gICAgICAgICAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXBwX2xhbmcnKTtcbiAgICAgICAgICAgIGlmICghc3RvcmVkIHx8ICFtZXJnZWRDb25maWcuc3VwcG9ydGVkTGFuZ3VhZ2VzLmluY2x1ZGVzKHN0b3JlZCBhcyBJMThuTGFuZykpIHtcbiAgICAgICAgICAgICAgY29uc3QgYnJvd3NlckxhbmcgPSBuYXZpZ2F0b3IubGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXSBhcyBJMThuTGFuZztcbiAgICAgICAgICAgICAgaWYgKG1lcmdlZENvbmZpZy5zdXBwb3J0ZWRMYW5ndWFnZXMuaW5jbHVkZXMoYnJvd3NlckxhbmcpKSB7XG4gICAgICAgICAgICAgICAgaTE4bi5zZXRMYW5ndWFnZShicm93c2VyTGFuZyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaTE4bi5zZXRMYW5ndWFnZShtZXJnZWRDb25maWcuZGVmYXVsdExhbmd1YWdlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbSTE4blNlcnZpY2VdLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSk7XG59XG5cbi8qKlxuICogRGVlcCBtZXJnZSBkZSBDb250ZW50U3RvcmUuXG4gKiBFbCBjb250ZW5pZG8gZGUgYG92ZXJyaWRlYCBzb2JyZXNjcmliZSBrZXlzIGVzcGVjw61maWNhcyBkZSBgYmFzZWAuXG4gKlxuICogQHBhcmFtIGJhc2UgLSBDb250ZW5pZG8gYmFzZSAoZGVmYXVsdHMgZGUgdmFsdGVjaC1jb21wb25lbnRzKVxuICogQHBhcmFtIG92ZXJyaWRlIC0gQ29udGVuaWRvIGRlbCB1c3VhcmlvIHF1ZSBzb2JyZXNjcmliZVxuICogQHJldHVybnMgQ29udGVudFN0b3JlIG1lcmdlYWRvXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGJhc2UgPSB7IF9nbG9iYWw6IHsgZXM6IHsgb2s6ICdBY2VwdGFyJyB9IH0gfTtcbiAqIGNvbnN0IG92ZXJyaWRlID0geyBfZ2xvYmFsOiB7IGVzOiB7IG9rOiAnRGFsZScgfSB9IH07XG4gKiAvLyBSZXN1bHRhZG86IHsgX2dsb2JhbDogeyBlczogeyBvazogJ0RhbGUnIH0gfSB9XG4gKi9cbmZ1bmN0aW9uIGRlZXBNZXJnZUNvbnRlbnQoYmFzZTogQ29udGVudFN0b3JlLCBvdmVycmlkZTogQ29udGVudFN0b3JlKTogQ29udGVudFN0b3JlIHtcbiAgY29uc3QgcmVzdWx0OiBDb250ZW50U3RvcmUgPSB7fTtcblxuICAvLyBDb3BpYXIgdG9kb3MgbG9zIG5hbWVzcGFjZXMgZGVsIGJhc2VcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgT2JqZWN0LmtleXMoYmFzZSkpIHtcbiAgICByZXN1bHRbbmFtZXNwYWNlXSA9IGRlZXBNZXJnZUxhbmd1YWdlc0NvbnRlbnQoYmFzZVtuYW1lc3BhY2VdLCB7fSk7XG4gIH1cblxuICAvLyBNZXJnZWFyIG5hbWVzcGFjZXMgZGVsIG92ZXJyaWRlXG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIE9iamVjdC5rZXlzKG92ZXJyaWRlKSkge1xuICAgIGlmIChyZXN1bHRbbmFtZXNwYWNlXSkge1xuICAgICAgLy8gTmFtZXNwYWNlIGV4aXN0ZSBlbiBiYXNlLCBoYWNlciBkZWVwIG1lcmdlXG4gICAgICByZXN1bHRbbmFtZXNwYWNlXSA9IGRlZXBNZXJnZUxhbmd1YWdlc0NvbnRlbnQocmVzdWx0W25hbWVzcGFjZV0sIG92ZXJyaWRlW25hbWVzcGFjZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOYW1lc3BhY2UgbnVldm8sIGNvcGlhciBjb21wbGV0b1xuICAgICAgcmVzdWx0W25hbWVzcGFjZV0gPSBkZWVwTWVyZ2VMYW5ndWFnZXNDb250ZW50KHt9LCBvdmVycmlkZVtuYW1lc3BhY2VdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERlZXAgbWVyZ2UgZGUgTGFuZ3VhZ2VzQ29udGVudCAodW4gbmFtZXNwYWNlKS5cbiAqL1xuZnVuY3Rpb24gZGVlcE1lcmdlTGFuZ3VhZ2VzQ29udGVudChcbiAgYmFzZTogTGFuZ3VhZ2VzQ29udGVudCxcbiAgb3ZlcnJpZGU6IExhbmd1YWdlc0NvbnRlbnRcbik6IExhbmd1YWdlc0NvbnRlbnQge1xuICBjb25zdCByZXN1bHQ6IExhbmd1YWdlc0NvbnRlbnQgPSB7fTtcbiAgY29uc3QgYWxsTGFuZ3MgPSBuZXcgU2V0KFtcbiAgICAuLi5PYmplY3Qua2V5cyhiYXNlKSxcbiAgICAuLi5PYmplY3Qua2V5cyhvdmVycmlkZSksXG4gIF0pIGFzIFNldDxJMThuTGFuZz47XG5cbiAgZm9yIChjb25zdCBsYW5nIG9mIGFsbExhbmdzKSB7XG4gICAgcmVzdWx0W2xhbmddID0ge1xuICAgICAgLi4uKGJhc2VbbGFuZ10gfHwge30pLFxuICAgICAgLi4uKG92ZXJyaWRlW2xhbmddIHx8IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '2.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '2.0.712';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC43MTInO1xuIl19
|
|
@@ -50,7 +50,7 @@ import 'prismjs/components/prism-json';
|
|
|
50
50
|
* Current version of valtech-components.
|
|
51
51
|
* This is automatically updated during the publish process.
|
|
52
52
|
*/
|
|
53
|
-
const VERSION = '2.0.
|
|
53
|
+
const VERSION = '2.0.712';
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* Servicio para gestionar presets de componentes.
|
|
@@ -4364,6 +4364,24 @@ function provideValtechI18n(config = {}) {
|
|
|
4364
4364
|
if (Object.keys(contentToRegister).length > 0) {
|
|
4365
4365
|
i18n.registerContentBulk(contentToRegister);
|
|
4366
4366
|
}
|
|
4367
|
+
// Aplicar idioma según configuración
|
|
4368
|
+
if (!mergedConfig.detectBrowserLanguage) {
|
|
4369
|
+
// Sin detección de navegador: forzar idioma por defecto
|
|
4370
|
+
i18n.setLanguage(mergedConfig.defaultLanguage);
|
|
4371
|
+
}
|
|
4372
|
+
else {
|
|
4373
|
+
// Con detección: re-evaluar ahora que supportedLanguages está configurado
|
|
4374
|
+
const stored = localStorage.getItem('app_lang');
|
|
4375
|
+
if (!stored || !mergedConfig.supportedLanguages.includes(stored)) {
|
|
4376
|
+
const browserLang = navigator.language.split('-')[0];
|
|
4377
|
+
if (mergedConfig.supportedLanguages.includes(browserLang)) {
|
|
4378
|
+
i18n.setLanguage(browserLang);
|
|
4379
|
+
}
|
|
4380
|
+
else {
|
|
4381
|
+
i18n.setLanguage(mergedConfig.defaultLanguage);
|
|
4382
|
+
}
|
|
4383
|
+
}
|
|
4384
|
+
}
|
|
4367
4385
|
};
|
|
4368
4386
|
},
|
|
4369
4387
|
deps: [I18nService],
|
|
@@ -9058,18 +9076,28 @@ class SelectSearchComponent {
|
|
|
9058
9076
|
return;
|
|
9059
9077
|
}
|
|
9060
9078
|
const controlValue = this.props.control.value;
|
|
9061
|
-
if (
|
|
9062
|
-
|
|
9063
|
-
|
|
9064
|
-
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
|
|
9068
|
-
const selectedOption = map.get(controlValue);
|
|
9069
|
-
this.selectedItems = selectedOption ? [selectedOption] : [];
|
|
9079
|
+
if (this.props.mode === 'legacy') {
|
|
9080
|
+
// Permisivo: muestra el valor aunque no esté en las opciones
|
|
9081
|
+
if (controlValue !== null && controlValue !== undefined) {
|
|
9082
|
+
this.displayValue = controlValue.toString();
|
|
9083
|
+
this.selectedItems = [];
|
|
9084
|
+
return;
|
|
9085
|
+
}
|
|
9070
9086
|
}
|
|
9071
9087
|
else {
|
|
9072
|
-
|
|
9088
|
+
// Estricto: solo muestra si coincide con una opción
|
|
9089
|
+
if (controlValue === null || controlValue === undefined) {
|
|
9090
|
+
this.selectedItems = [];
|
|
9091
|
+
return;
|
|
9092
|
+
}
|
|
9093
|
+
if (this.props.options && this.props.options.length > 0) {
|
|
9094
|
+
const map = new Map(this.props.options.map(opt => [opt[this.valueProperty], opt]));
|
|
9095
|
+
const selectedOption = map.get(controlValue);
|
|
9096
|
+
this.selectedItems = selectedOption ? [selectedOption] : [];
|
|
9097
|
+
}
|
|
9098
|
+
else {
|
|
9099
|
+
this.selectedItems = [];
|
|
9100
|
+
}
|
|
9073
9101
|
}
|
|
9074
9102
|
}
|
|
9075
9103
|
applyDefaultValue() {
|
|
@@ -9161,6 +9189,10 @@ class SelectSearchComponent {
|
|
|
9161
9189
|
return this.selectedItems.some(selectedItem => selectedItem[this.valueProperty] === item[this.valueProperty]);
|
|
9162
9190
|
}
|
|
9163
9191
|
updateDisplayValue() {
|
|
9192
|
+
if (this.props?.mode === 'legacy' && this.selectedItems.length === 0 && this.props?.control?.value) {
|
|
9193
|
+
this.displayValue = this.props.control.value.toString();
|
|
9194
|
+
return;
|
|
9195
|
+
}
|
|
9164
9196
|
if (this.selectedItems.length === 0) {
|
|
9165
9197
|
this.displayValue = '';
|
|
9166
9198
|
return;
|
|
@@ -22682,8 +22714,6 @@ class FormComponent {
|
|
|
22682
22714
|
this.onSelectChange = new EventEmitter();
|
|
22683
22715
|
this.types = InputType;
|
|
22684
22716
|
this.subscriptions = [];
|
|
22685
|
-
// Cache para evitar crear nuevos objetos en cada ciclo de change detection
|
|
22686
|
-
this.fieldPropsCache = new Map();
|
|
22687
22717
|
this.actionsCache = [];
|
|
22688
22718
|
}
|
|
22689
22719
|
ngOnInit() {
|
|
@@ -22711,15 +22741,14 @@ class FormComponent {
|
|
|
22711
22741
|
this.trackSelectChanges(field.name);
|
|
22712
22742
|
});
|
|
22713
22743
|
});
|
|
22714
|
-
|
|
22715
|
-
this.rebuildFieldPropsCache();
|
|
22744
|
+
this.syncFieldControlStates();
|
|
22716
22745
|
this.updateActionsCache();
|
|
22717
22746
|
this.previousState = this.props.state;
|
|
22718
22747
|
}
|
|
22719
22748
|
ngOnChanges(changes) {
|
|
22720
22749
|
// Cuando props cambia, reconstruir el cache
|
|
22721
22750
|
if (changes['props'] && this.form) {
|
|
22722
|
-
this.
|
|
22751
|
+
this.syncFieldControlStates();
|
|
22723
22752
|
this.updateActionsCache();
|
|
22724
22753
|
this.previousState = this.props.state;
|
|
22725
22754
|
}
|
|
@@ -22732,14 +22761,11 @@ class FormComponent {
|
|
|
22732
22761
|
}
|
|
22733
22762
|
}
|
|
22734
22763
|
/**
|
|
22735
|
-
*
|
|
22736
|
-
* Esto evita crear nuevos objetos en cada ciclo de change detection.
|
|
22764
|
+
* Synchronizes form control disabled/enabled state with field metadata.
|
|
22737
22765
|
*/
|
|
22738
|
-
|
|
22739
|
-
this.fieldPropsCache.clear();
|
|
22766
|
+
syncFieldControlStates() {
|
|
22740
22767
|
this.props.sections.forEach(section => {
|
|
22741
22768
|
section.fields.forEach(field => {
|
|
22742
|
-
const token = field.token || `input-${field.type}-${field.name}`;
|
|
22743
22769
|
if (field.type === this.types.NUMBER_FROM_TO) {
|
|
22744
22770
|
const fromControl = this.getControl(`${field.name}_from`);
|
|
22745
22771
|
const toControl = this.getControl(`${field.name}_to`);
|
|
@@ -22751,13 +22777,6 @@ class FormComponent {
|
|
|
22751
22777
|
fromControl.enable({ emitEvent: false });
|
|
22752
22778
|
toControl.enable({ emitEvent: false });
|
|
22753
22779
|
}
|
|
22754
|
-
this.fieldPropsCache.set(field.name, {
|
|
22755
|
-
...field,
|
|
22756
|
-
token,
|
|
22757
|
-
fromControl,
|
|
22758
|
-
toControl,
|
|
22759
|
-
control: undefined,
|
|
22760
|
-
});
|
|
22761
22780
|
}
|
|
22762
22781
|
else {
|
|
22763
22782
|
const control = this.getControl(field.name);
|
|
@@ -22767,11 +22786,6 @@ class FormComponent {
|
|
|
22767
22786
|
else {
|
|
22768
22787
|
control.enable({ emitEvent: false });
|
|
22769
22788
|
}
|
|
22770
|
-
this.fieldPropsCache.set(field.name, {
|
|
22771
|
-
...field,
|
|
22772
|
-
token,
|
|
22773
|
-
control,
|
|
22774
|
-
});
|
|
22775
22789
|
}
|
|
22776
22790
|
});
|
|
22777
22791
|
});
|
|
@@ -22810,50 +22824,16 @@ class FormComponent {
|
|
|
22810
22824
|
return this.Form.get(field);
|
|
22811
22825
|
}
|
|
22812
22826
|
getFieldProp(field) {
|
|
22813
|
-
|
|
22814
|
-
|
|
22815
|
-
if (cached) {
|
|
22816
|
-
return cached;
|
|
22827
|
+
if (!field.token) {
|
|
22828
|
+
field.token = `input-${field.type}-${field.name}`;
|
|
22817
22829
|
}
|
|
22818
|
-
// Fallback: generar y cachear si no existe (no debería ocurrir normalmente)
|
|
22819
|
-
const token = field.token || `input-${field.type}-${field.name}`;
|
|
22820
22830
|
if (field.type === this.types.NUMBER_FROM_TO) {
|
|
22821
22831
|
const fromControl = this.getControl(`${field.name}_from`);
|
|
22822
22832
|
const toControl = this.getControl(`${field.name}_to`);
|
|
22823
|
-
|
|
22824
|
-
fromControl.disable({ emitEvent: false });
|
|
22825
|
-
toControl.disable({ emitEvent: false });
|
|
22826
|
-
}
|
|
22827
|
-
else {
|
|
22828
|
-
fromControl.enable({ emitEvent: false });
|
|
22829
|
-
toControl.enable({ emitEvent: false });
|
|
22830
|
-
}
|
|
22831
|
-
const props = {
|
|
22832
|
-
...field,
|
|
22833
|
-
token,
|
|
22834
|
-
fromControl,
|
|
22835
|
-
toControl,
|
|
22836
|
-
control: undefined,
|
|
22837
|
-
};
|
|
22838
|
-
this.fieldPropsCache.set(field.name, props);
|
|
22839
|
-
return props;
|
|
22840
|
-
}
|
|
22841
|
-
else {
|
|
22842
|
-
const control = this.getControl(field.name);
|
|
22843
|
-
if (field.state === ComponentStates.DISABLED) {
|
|
22844
|
-
control.disable({ emitEvent: false });
|
|
22845
|
-
}
|
|
22846
|
-
else {
|
|
22847
|
-
control.enable({ emitEvent: false });
|
|
22848
|
-
}
|
|
22849
|
-
const props = {
|
|
22850
|
-
...field,
|
|
22851
|
-
token,
|
|
22852
|
-
control,
|
|
22853
|
-
};
|
|
22854
|
-
this.fieldPropsCache.set(field.name, props);
|
|
22855
|
-
return props;
|
|
22833
|
+
return { ...field, fromControl, toControl, control: undefined };
|
|
22856
22834
|
}
|
|
22835
|
+
const control = this.getControl(field.name);
|
|
22836
|
+
return { ...field, control };
|
|
22857
22837
|
}
|
|
22858
22838
|
get isAtEndOfForm() {
|
|
22859
22839
|
return isAtEnd(this.elementRef);
|
|
@@ -28467,6 +28447,38 @@ class TypedCollection {
|
|
|
28467
28447
|
}
|
|
28468
28448
|
return this.firestore.deleteDoc(this.collectionPath, id);
|
|
28469
28449
|
}
|
|
28450
|
+
/**
|
|
28451
|
+
* Actualiza múltiples documentos en una sola operación atómica.
|
|
28452
|
+
*/
|
|
28453
|
+
async batchUpdate(ids, data) {
|
|
28454
|
+
if (ids.length === 0)
|
|
28455
|
+
return;
|
|
28456
|
+
const BATCH_LIMIT = 500; // Firestore batch limit
|
|
28457
|
+
for (let i = 0; i < ids.length; i += BATCH_LIMIT) {
|
|
28458
|
+
const chunk = ids.slice(i, i + BATCH_LIMIT);
|
|
28459
|
+
await this.firestore.batch(batch => {
|
|
28460
|
+
for (const id of chunk) {
|
|
28461
|
+
batch.update(`${this.collectionPath}/${id}`, data);
|
|
28462
|
+
}
|
|
28463
|
+
});
|
|
28464
|
+
}
|
|
28465
|
+
}
|
|
28466
|
+
/**
|
|
28467
|
+
* Elimina múltiples documentos en una sola operación atómica.
|
|
28468
|
+
*/
|
|
28469
|
+
async batchDelete(ids) {
|
|
28470
|
+
if (ids.length === 0)
|
|
28471
|
+
return;
|
|
28472
|
+
const BATCH_LIMIT = 500;
|
|
28473
|
+
for (let i = 0; i < ids.length; i += BATCH_LIMIT) {
|
|
28474
|
+
const chunk = ids.slice(i, i + BATCH_LIMIT);
|
|
28475
|
+
await this.firestore.batch(batch => {
|
|
28476
|
+
for (const id of chunk) {
|
|
28477
|
+
batch.delete(`${this.collectionPath}/${id}`);
|
|
28478
|
+
}
|
|
28479
|
+
});
|
|
28480
|
+
}
|
|
28481
|
+
}
|
|
28470
28482
|
/**
|
|
28471
28483
|
* Restaura un documento soft-deleted.
|
|
28472
28484
|
*/
|
|
@@ -29909,6 +29921,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
29909
29921
|
* Se auto-inicializa cuando AuthService tiene un usuario autenticado.
|
|
29910
29922
|
* También puede inicializarse manualmente con `initialize(userId)`.
|
|
29911
29923
|
*/
|
|
29924
|
+
/** Límite por defecto de notificaciones a cargar */
|
|
29925
|
+
const DEFAULT_LIMIT = 50;
|
|
29912
29926
|
/**
|
|
29913
29927
|
* Servicio para leer notificaciones desde Firestore.
|
|
29914
29928
|
*
|
|
@@ -29986,7 +30000,9 @@ class NotificationsService {
|
|
|
29986
30000
|
// Path relativo - FirestoreService agrega automáticamente apps/{appId}/
|
|
29987
30001
|
// NO agregar apps/ aquí para evitar doble prefijo
|
|
29988
30002
|
const basePath = `users/${userId}/notifications`;
|
|
29989
|
-
this.collection = this.collectionFactory.create(basePath, {
|
|
30003
|
+
this.collection = this.collectionFactory.create(basePath, {
|
|
30004
|
+
timestamps: true,
|
|
30005
|
+
});
|
|
29990
30006
|
console.log('[Notifications] Initialized with path:', basePath);
|
|
29991
30007
|
}
|
|
29992
30008
|
/**
|
|
@@ -30005,39 +30021,59 @@ class NotificationsService {
|
|
|
30005
30021
|
// LECTURA
|
|
30006
30022
|
// ===========================================================================
|
|
30007
30023
|
/**
|
|
30008
|
-
* Obtiene
|
|
30009
|
-
*
|
|
30024
|
+
* Obtiene notificaciones ordenadas por fecha descendente (real-time).
|
|
30025
|
+
* Se actualiza automáticamente cuando cambian los datos.
|
|
30026
|
+
*
|
|
30027
|
+
* @param limit - Máximo de notificaciones a cargar (default: 50)
|
|
30010
30028
|
*/
|
|
30011
|
-
getAll() {
|
|
30029
|
+
getAll(limit = DEFAULT_LIMIT) {
|
|
30012
30030
|
if (!this.collection)
|
|
30013
30031
|
return of([]);
|
|
30014
30032
|
return this.collection.watchAll({
|
|
30015
30033
|
orderBy: [{ field: 'createdAt', direction: 'desc' }],
|
|
30034
|
+
limit,
|
|
30016
30035
|
});
|
|
30017
30036
|
}
|
|
30018
30037
|
/**
|
|
30019
|
-
* Obtiene
|
|
30038
|
+
* Obtiene notificaciones (one-time fetch sin listener).
|
|
30020
30039
|
* Útil para cargas iniciales sin necesidad de updates en tiempo real.
|
|
30040
|
+
*
|
|
30041
|
+
* @param limit - Máximo de notificaciones a cargar (default: 50)
|
|
30021
30042
|
*/
|
|
30022
|
-
async getAllOnce() {
|
|
30043
|
+
async getAllOnce(limit = DEFAULT_LIMIT) {
|
|
30023
30044
|
if (!this.collection)
|
|
30024
30045
|
return [];
|
|
30025
30046
|
return this.collection.getAllOnce({
|
|
30026
30047
|
orderBy: [{ field: 'createdAt', direction: 'desc' }],
|
|
30048
|
+
limit,
|
|
30027
30049
|
});
|
|
30028
30050
|
}
|
|
30029
30051
|
/**
|
|
30030
|
-
* Obtiene solo notificaciones no leídas.
|
|
30052
|
+
* Obtiene solo notificaciones no leídas (real-time, filtrado server-side).
|
|
30053
|
+
*
|
|
30054
|
+
* @param limit - Máximo de notificaciones (default: 50)
|
|
30031
30055
|
*/
|
|
30032
|
-
getUnread() {
|
|
30033
|
-
|
|
30056
|
+
getUnread(limit = DEFAULT_LIMIT) {
|
|
30057
|
+
if (!this.collection)
|
|
30058
|
+
return of([]);
|
|
30059
|
+
return this.collection.watchAll({
|
|
30060
|
+
where: [{ field: 'isRead', operator: '==', value: false }],
|
|
30061
|
+
orderBy: [{ field: 'createdAt', direction: 'desc' }],
|
|
30062
|
+
limit,
|
|
30063
|
+
});
|
|
30034
30064
|
}
|
|
30035
30065
|
/**
|
|
30036
|
-
* Cuenta notificaciones no leídas.
|
|
30066
|
+
* Cuenta notificaciones no leídas (real-time, filtrado server-side).
|
|
30037
30067
|
* Útil para badges en UI.
|
|
30038
30068
|
*/
|
|
30039
30069
|
getUnreadCount() {
|
|
30040
|
-
|
|
30070
|
+
if (!this.collection)
|
|
30071
|
+
return of(0);
|
|
30072
|
+
return this.collection
|
|
30073
|
+
.watchAll({
|
|
30074
|
+
where: [{ field: 'isRead', operator: '==', value: false }],
|
|
30075
|
+
})
|
|
30076
|
+
.pipe(map$1(n => n.length));
|
|
30041
30077
|
}
|
|
30042
30078
|
/**
|
|
30043
30079
|
* Obtiene una notificación por ID.
|
|
@@ -30059,7 +30095,7 @@ class NotificationsService {
|
|
|
30059
30095
|
await this.collection.update(notificationId, { isRead: true });
|
|
30060
30096
|
}
|
|
30061
30097
|
/**
|
|
30062
|
-
* Marca todas las notificaciones como leídas.
|
|
30098
|
+
* Marca todas las notificaciones no leídas como leídas (batch write).
|
|
30063
30099
|
*/
|
|
30064
30100
|
async markAllAsRead() {
|
|
30065
30101
|
if (!this.collection)
|
|
@@ -30067,7 +30103,8 @@ class NotificationsService {
|
|
|
30067
30103
|
const unread = await this.collection.query({
|
|
30068
30104
|
where: [{ field: 'isRead', operator: '==', value: false }],
|
|
30069
30105
|
});
|
|
30070
|
-
|
|
30106
|
+
const ids = unread.map(n => n.id).filter(Boolean);
|
|
30107
|
+
await this.collection.batchUpdate(ids, { isRead: true });
|
|
30071
30108
|
}
|
|
30072
30109
|
/**
|
|
30073
30110
|
* Elimina una notificación.
|
|
@@ -30078,13 +30115,14 @@ class NotificationsService {
|
|
|
30078
30115
|
await this.collection.delete(notificationId);
|
|
30079
30116
|
}
|
|
30080
30117
|
/**
|
|
30081
|
-
* Elimina todas las notificaciones del usuario.
|
|
30118
|
+
* Elimina todas las notificaciones del usuario (batch delete).
|
|
30082
30119
|
*/
|
|
30083
30120
|
async deleteAll() {
|
|
30084
30121
|
if (!this.collection)
|
|
30085
30122
|
return;
|
|
30086
30123
|
const all = await this.collection.getAll();
|
|
30087
|
-
|
|
30124
|
+
const ids = all.map(n => n.id).filter(Boolean);
|
|
30125
|
+
await this.collection.batchDelete(ids);
|
|
30088
30126
|
}
|
|
30089
30127
|
/**
|
|
30090
30128
|
* Limpia el estado del servicio.
|