@rosoftlab/rdict 1.0.1-alpha-10 → 1.0.1-alpha-12
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.
|
@@ -203,31 +203,29 @@ class ReactiveDictionary extends Map {
|
|
|
203
203
|
this._socketService.getDeleteEvent(this);
|
|
204
204
|
await this.asyncInit();
|
|
205
205
|
}
|
|
206
|
-
keys() {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
return filteredIterator;
|
|
230
|
-
}
|
|
206
|
+
// override keys(): IterableIterator<string> {
|
|
207
|
+
// const excludedKeys = ['__guid', '__type']; // Key to exclude
|
|
208
|
+
// const iterator = super.keys();
|
|
209
|
+
// const filteredIterator = {
|
|
210
|
+
// [Symbol.iterator]: () => ({
|
|
211
|
+
// next: () => {
|
|
212
|
+
// let result;
|
|
213
|
+
// // Loop until we find a valid key or run out of keys
|
|
214
|
+
// do {
|
|
215
|
+
// result = iterator.next(); // Get the next entry ([key, value])
|
|
216
|
+
// if (result.done) return { done: true }; // Stop if done
|
|
217
|
+
// const key = result.value; // Destructure the entry
|
|
218
|
+
// const value = super.get(key);
|
|
219
|
+
// // Check if the key is in excludedKeys or if the value is an object
|
|
220
|
+
// if (!excludedKeys.includes(key) && !(typeof value === 'object' && value !== null)) {
|
|
221
|
+
// return { value: key, done: false }; // Return the valid key
|
|
222
|
+
// }
|
|
223
|
+
// } while (true); // Continue until a valid key is found
|
|
224
|
+
// }
|
|
225
|
+
// })
|
|
226
|
+
// };
|
|
227
|
+
// return filteredIterator as IterableIterator<string>;
|
|
228
|
+
// }
|
|
231
229
|
// Asynchronous method to get a value by key
|
|
232
230
|
async asyncGet(key) {
|
|
233
231
|
// console.log('Get key: ', key);
|
|
@@ -369,8 +367,7 @@ class ReactiveDictionary extends Map {
|
|
|
369
367
|
}
|
|
370
368
|
jsonDateReviver(key, value) {
|
|
371
369
|
// Check if the value is a valid ISO date string
|
|
372
|
-
if (typeof value === 'string' &&
|
|
373
|
-
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value)) {
|
|
370
|
+
if (typeof value === 'string' && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value)) {
|
|
374
371
|
return new Date(value); // Convert to JavaScript Date object
|
|
375
372
|
}
|
|
376
373
|
return value;
|
|
@@ -379,6 +376,19 @@ class ReactiveDictionary extends Map {
|
|
|
379
376
|
return from(this.asyncGet(key));
|
|
380
377
|
}
|
|
381
378
|
getTableAsObservable(key, data = null) {
|
|
379
|
+
return from(this.getTable(key, data)).pipe(mergeMap((dictionaryMap) => {
|
|
380
|
+
if (!(dictionaryMap instanceof Map)) {
|
|
381
|
+
throw new Error('Expected a Map but received something else');
|
|
382
|
+
}
|
|
383
|
+
const values = Array.from(dictionaryMap.values());
|
|
384
|
+
const isValid = values.every((item) => item instanceof ReactiveDictionary);
|
|
385
|
+
if (!isValid) {
|
|
386
|
+
throw new Error('Expected a Map of ReactiveDictionary instances but found invalid entries');
|
|
387
|
+
}
|
|
388
|
+
return from(this.processTableData(values));
|
|
389
|
+
}));
|
|
390
|
+
}
|
|
391
|
+
getTableAsObservable_old(key, data = null) {
|
|
382
392
|
return from(this.getTable(key, data)).pipe(mergeMap((dictionary) => {
|
|
383
393
|
if (!Array.isArray(dictionary)) {
|
|
384
394
|
throw new Error('Expected an array but received something else');
|
|
@@ -392,6 +402,24 @@ class ReactiveDictionary extends Map {
|
|
|
392
402
|
}));
|
|
393
403
|
}
|
|
394
404
|
async getTable(key, data = null) {
|
|
405
|
+
if (!data)
|
|
406
|
+
data = await this.asyncGet(key);
|
|
407
|
+
if (!data)
|
|
408
|
+
return new Map();
|
|
409
|
+
console.log('getTable', data);
|
|
410
|
+
const entries = await Promise.all(Array.from(data.entries()).map(async ([k, v]) => {
|
|
411
|
+
const entry = (await data.asyncGet(k));
|
|
412
|
+
if (entry instanceof ReactiveDictionary) {
|
|
413
|
+
entry.set('__idx', k);
|
|
414
|
+
return [k, entry];
|
|
415
|
+
}
|
|
416
|
+
return null;
|
|
417
|
+
}));
|
|
418
|
+
// Filter out any nulls (non-ReactiveDictionary entries)
|
|
419
|
+
const validEntries = entries.filter((e) => e !== null);
|
|
420
|
+
return new Map(validEntries);
|
|
421
|
+
}
|
|
422
|
+
async getTable_old(key, data = null) {
|
|
395
423
|
if (!data)
|
|
396
424
|
data = await this.asyncGet(key); // Get rooms from the ReactiveDictionary
|
|
397
425
|
if (!data)
|
|
@@ -482,9 +510,18 @@ class ReactiveDictionary extends Map {
|
|
|
482
510
|
onDelete() {
|
|
483
511
|
return this.deletes$.asObservable();
|
|
484
512
|
}
|
|
513
|
+
getNextOid() {
|
|
514
|
+
const numericKeys = Array.from(this.keys())
|
|
515
|
+
.filter((k) => /^\d+$/.test(k)) // keep only purely numeric keys
|
|
516
|
+
.map((k) => parseInt(k, 10));
|
|
517
|
+
if (numericKeys.length === 0)
|
|
518
|
+
return null;
|
|
519
|
+
const maxKey = Math.max(...numericKeys);
|
|
520
|
+
return (maxKey + 1).toString();
|
|
521
|
+
}
|
|
485
522
|
async update(record, key = null) {
|
|
486
523
|
if (!key)
|
|
487
|
-
key = this.
|
|
524
|
+
key = this.getNextOid();
|
|
488
525
|
const dict = await this.asyncGet(key);
|
|
489
526
|
for (const key in record) {
|
|
490
527
|
if (record.hasOwnProperty(key)) {
|
|
@@ -498,12 +535,13 @@ class ReactiveDictionary extends Map {
|
|
|
498
535
|
return this.get('__modelFormList');
|
|
499
536
|
}
|
|
500
537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: ReactiveDictionary, deps: [{ token: SocketService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
501
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: ReactiveDictionary, providedIn: 'root'
|
|
538
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: ReactiveDictionary, providedIn: 'root' // This makes the service a singleton and available throughout the app
|
|
539
|
+
}); }
|
|
502
540
|
}
|
|
503
541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: ReactiveDictionary, decorators: [{
|
|
504
542
|
type: Injectable,
|
|
505
543
|
args: [{
|
|
506
|
-
providedIn: 'root'
|
|
544
|
+
providedIn: 'root' // This makes the service a singleton and available throughout the app
|
|
507
545
|
}]
|
|
508
546
|
}], ctorParameters: () => [{ type: SocketService }] });
|
|
509
547
|
|
|
@@ -1054,7 +1092,7 @@ class RdictCrudComponent {
|
|
|
1054
1092
|
return this.rdict.getTableAsObservable(key);
|
|
1055
1093
|
}
|
|
1056
1094
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: RdictCrudComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i1.LocalFileService }, { token: MaterialDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1057
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: RdictCrudComponent, isStandalone: true, selector: "app-rdict-crud", ngImport: i0, template: "<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n<form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n
|
|
1095
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: RdictCrudComponent, isStandalone: true, selector: "app-rdict-crud", ngImport: i0, template: "<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i6$1.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyKendoModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CrudFormlyTransaltionModule }, { kind: "component", type: i8.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i8.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i8.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }] }); }
|
|
1058
1096
|
}
|
|
1059
1097
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: RdictCrudComponent, decorators: [{
|
|
1060
1098
|
type: Component,
|
|
@@ -1065,7 +1103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
1065
1103
|
TranslateModule,
|
|
1066
1104
|
CrudFormlyTransaltionModule,
|
|
1067
1105
|
KENDO_TOOLBAR
|
|
1068
|
-
], template: "<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n<form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n
|
|
1106
|
+
], template: "<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"] }]
|
|
1069
1107
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i1.LocalFileService }, { type: MaterialDialogService }] });
|
|
1070
1108
|
|
|
1071
1109
|
class RdictTableTitle extends ToolBarToolComponent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rosoftlab-rdict.mjs","sources":["../../../../projects/rosoftlab/rdict/src/lib/services/socket.service.ts","../../../../projects/rosoftlab/rdict/src/lib/reactive-dictionary.ts","../../../../projects/rosoftlab/rdict/src/lib/models/menu.ts","../../../../projects/rosoftlab/rdict/src/lib/models/right.ts","../../../../projects/rosoftlab/rdict/src/lib/models/user.ts","../../../../projects/rosoftlab/rdict/src/lib/services/user.service.ts","../../../../projects/rosoftlab/rdict/src/lib/components/layouts/full/full.component.ts","../../../../projects/rosoftlab/rdict/src/lib/components/layouts/full/full.component.html","../../../../projects/rosoftlab/rdict/src/lib/services/material-dialog.service.ts","../../../../projects/rosoftlab/rdict/src/lib/translate.extension.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-crud/rsl-reactive-dictionary.module.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-crud/rdict-crud.component.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-crud/rdict-crud.component.html","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-generic-table/rdict-table-title.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-generic-table/rdict-generic-table.component.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-generic-table/rdict-generic-table.component.html","../../../../projects/rosoftlab/rdict/src/lib/socket-config.token.ts","../../../../projects/rosoftlab/rdict/src/public-api.ts","../../../../projects/rosoftlab/rdict/src/rosoftlab-rdict.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\r\nimport { io, Socket } from 'socket.io-client';\r\nimport { SOCKET_URL } from '../core';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SocketService {\r\n private socket: Socket;\r\n private socketUrl: string\r\n constructor(\r\n @Inject(SOCKET_URL) socketUrl: string,) {\r\n this.socketUrl = socketUrl\r\n // Replace with your actual server URL\r\n // this.socket.on(\"connect\", () => {\r\n // const engine = this.socket.io.engine;\r\n // (engine.transport.name); // in most cases, prints \"polling\"\r\n\r\n // engine.once(\"upgrade\", () => {\r\n // // called when the transport is upgraded (i.e. from HTTP long-polling to WebSocket)\r\n // (engine.transport.name); // in most cases, prints \"websocket\"\r\n // });\r\n\r\n // });\r\n }\r\n initSocket(authToken: string) {\r\n if (this.socket == null && authToken !== null) {\r\n this.socket = io(this.socketUrl, {\r\n withCredentials: true,\r\n // parser: msgpackParser,\r\n auth: {\r\n token: authToken, // Include the authentication token\r\n }\r\n // ,\r\n // query: {\r\n // \"access_token\": authToken\r\n // }\r\n });\r\n\r\n // const originalEmit = this.socket.emit;\r\n // this.socket.emit = (event, ...args) => {\r\n // // Transform dates before sending\r\n // const transformedData = this.transformDatesForEncoding(args[0]);\r\n // originalEmit.call(this.socket, event, transformedData);\r\n // return this.socket;\r\n // };\r\n\r\n // Intercept incoming data and apply date transformation\r\n // this.socket.onAny((event, data) => {\r\n // const transformedData = this.transformDatesForDecoding(data);\r\n // this.socket.emit(event, transformedData); // Emit the transformed data back\r\n // });\r\n }\r\n }\r\n getInitialData(): Promise<Record<string, any>> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.on('init', (data: any) => {\r\n if (data) {\r\n resolve(data[\"dict_data\"]);\r\n } else {\r\n reject('No data received from init event');\r\n }\r\n });\r\n });\r\n }\r\n getSetEvent(rdict: any) {\r\n this.socket.on('set', (data: any) => {\r\n // (rdict.get('__guid'), data, this.socket.id)\r\n if (rdict.get('__guid') === data.did) {\r\n // ('Set the data')\r\n rdict.asyncSet(data.key, data.value, false)\r\n }\r\n });\r\n }\r\n getDeleteEvent(rdict: any) {\r\n this.socket.on('delete', (data: any) => {\r\n // (rdict.get('__guid'), data, this.socket.id)\r\n if (rdict.get('__guid') === data.did) {\r\n // ('Set the data')\r\n rdict.asyncDelete(data.key, false)\r\n }\r\n });\r\n }\r\n // Emit the 'lazy_load' event with callback to get the response\r\n requestLazyLoad(did: string, key: string): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.emit('lazy_load', { did, key }, (response: any) => {\r\n if (response && response.error) {\r\n reject(response.error); // Handle error if present\r\n } else {\r\n resolve(response); // Resolve with the response data\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Emit the 'set' event to update the data on the server\r\n emitSet(did: string, key: string, value: any): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.emit('set', { did, key, value }, (response: any) => {\r\n if (response && response.error) {\r\n reject(response.error);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Emit the 'set' event to update the data on the server\r\n emitDelete(did: string, key: string): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.emit('delete', { did, key }, (response: any) => {\r\n if (response && response.error) {\r\n reject(response.error);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n });\r\n }\r\n\r\n transformDatesForEncoding(obj: any): any {\r\n if (obj instanceof Date) {\r\n return { __date__: obj.toISOString() };\r\n } else if (Array.isArray(obj)) {\r\n return obj.map(this.transformDatesForEncoding);\r\n } else if (obj !== null && typeof obj === \"object\") {\r\n return Object.keys(obj).reduce((acc, key) => {\r\n acc[key] = this.transformDatesForEncoding(obj[key]);\r\n return acc;\r\n }, {} as any);\r\n }\r\n return obj;\r\n }\r\n\r\n transformDatesForDecoding(obj: any): any {\r\n if (typeof obj === \"object\" && obj !== null) {\r\n if (\"__date__\" in obj) {\r\n return new Date(obj.__date__);\r\n }\r\n return Object.keys(obj).reduce((acc, key) => {\r\n acc[key] = this.transformDatesForDecoding(obj[key]);\r\n return acc;\r\n }, {} as any);\r\n }\r\n return obj;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { from, mergeMap, Observable, Subject } from 'rxjs';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { SocketService } from './services/socket.service';\r\n// import { mergeMap } from 'rxjs/operators';\r\n@Injectable({\r\n providedIn: 'root', // This makes the service a singleton and available throughout the app\r\n})\r\nexport class ReactiveDictionary extends Map<string, any> {\r\n private static instance: Map<string, ReactiveDictionary> = new Map<\r\n string,\r\n ReactiveDictionary\r\n >();\r\n private _socketService: SocketService;\r\n private changes$: Subject<any> = new Subject<any>();\r\n private deletes$: Subject<any> = new Subject<any>();\r\n\r\n private isInitialized: boolean = false;\r\n private _authToken: string = null;\r\n private constructor(socketService: SocketService) {\r\n super();\r\n\r\n this._socketService = socketService;\r\n // this._socketService.initSocket(authToken)\r\n\r\n // this._socketService.getSetEvent(this)\r\n }\r\n public async initialize(authToken: string) {\r\n this._authToken = authToken;\r\n this._socketService.initSocket(authToken) \r\n this._socketService.getSetEvent(this);\r\n this._socketService.getDeleteEvent(this);\r\n await this.asyncInit();\r\n }\r\n\r\n override keys(): IterableIterator<string> {\r\n const excludedKeys = ['__guid', '__type']; // Key to exclude\r\n const iterator = super.keys();\r\n\r\n const filteredIterator = {\r\n [Symbol.iterator]: () => ({\r\n next: () => {\r\n let result;\r\n\r\n // Loop until we find a valid key or run out of keys\r\n do {\r\n result = iterator.next(); // Get the next entry ([key, value])\r\n if (result.done) return { done: true }; // Stop if done\r\n\r\n const key = result.value; // Destructure the entry\r\n const value = super.get(key);\r\n // Check if the key is in excludedKeys or if the value is an object\r\n if (\r\n !excludedKeys.includes(key) &&\r\n !(typeof value === 'object' && value !== null)\r\n ) {\r\n return { value: key, done: false }; // Return the valid key\r\n }\r\n } while (true); // Continue until a valid key is found\r\n },\r\n }),\r\n };\r\n\r\n return filteredIterator as IterableIterator<string>;\r\n }\r\n // Asynchronous method to get a value by key\r\n async asyncGet(key: string): Promise<any> {\r\n // console.log('Get key: ', key);\r\n const keys = key.split('.');\r\n if (keys.length === 1) {\r\n if (this.has(key)) {\r\n const value = this.get(key);\r\n if (value instanceof ReactiveDictionary) {\r\n return value;\r\n }\r\n if (typeof value === 'object' && value !== null) {\r\n const dict_type = value['__type'];\r\n // console.log('value type : ', dict_type);\r\n if (dict_type === 'dict' || dict_type === 'lazy') {\r\n const lazyLoadData = await this.lazyLoadSync(\r\n this.get('__guid'),\r\n key\r\n );\r\n // console.log(lazyLoadData)\r\n if (lazyLoadData) {\r\n const dict = new ReactiveDictionary(this._socketService);\r\n dict.initialize(this._authToken);\r\n await dict.asyncInit(lazyLoadData.data);\r\n this.set(key, dict);\r\n return dict;\r\n }\r\n }\r\n }\r\n return value;\r\n } else {\r\n const dict = new ReactiveDictionary(this._socketService);\r\n dict.initialize(this._authToken);\r\n dict.set('__guid', uuidv4());\r\n dict.set('__type', 'dict');\r\n this.set(key, dict);\r\n await this._socketService.emitSet(\r\n this.get('__guid'),\r\n key,\r\n this.transform_for_serialization(dict)\r\n );\r\n return dict;\r\n }\r\n } else {\r\n const obj = (await this.asyncGet(keys[0])) as ReactiveDictionary;\r\n if (obj) return await obj.asyncGet(keys.slice(1).join('.'));\r\n else return null;\r\n }\r\n }\r\n transform_for_serialization(value: any) {\r\n // Transform a value to a format that can be serialized.\r\n const dict_type = value['__type'];\r\n if (dict_type === 'lazy') return { __type: 'lazy' };\r\n else if (value instanceof ReactiveDictionary)\r\n return { __type: 'dict', __guid: value.get('__guid') };\r\n else return value;\r\n }\r\n // Asynchronous method to set a value by key\r\n async asyncSet(\r\n key: string,\r\n value: any,\r\n emmit_event: boolean = true\r\n ): Promise<void> {\r\n if (emmit_event) {\r\n try {\r\n await this._socketService.emitSet(this.get('__guid'), key, value);\r\n } catch (error) {\r\n console.error('Error emitting set event:', error);\r\n }\r\n }\r\n this.set(key, value);\r\n this.changes$.next({ key, value });\r\n }\r\n async asyncDelete(key: string, emmit_event: boolean = true): Promise<void> {\r\n if (this.has(key)) {\r\n if (emmit_event) {\r\n try {\r\n await this._socketService.emitDelete(this.get('__guid'), key);\r\n } catch (error) {\r\n console.error('Error emitting set event:', error);\r\n }\r\n }\r\n this.delete(key);\r\n this.deletes$.next({ key });\r\n }\r\n }\r\n deleteAsObservable(\r\n key: string,\r\n emmit_event: boolean = true\r\n ): Observable<any> {\r\n return from(this.asyncDelete(key, emmit_event));\r\n }\r\n // Asynchronous method to initialize with a set of key-value pairs\r\n async asyncInit(initialData?: Record<string, any>) {\r\n if (!this.isInitialized) {\r\n try {\r\n // If initial data is not provided, fetch it\r\n const data =\r\n initialData || (await this._socketService.getInitialData());\r\n // this.known_dicts.set(data.__guid,data);\r\n // Set the initial properties on the proxy\r\n for (const [key, value] of Object.entries(data)) {\r\n this.set(key, value);\r\n }\r\n this.isInitialized = true;\r\n } catch (error) {\r\n console.error('Error during initialization:', error);\r\n }\r\n }\r\n }\r\n\r\n async lazyLoadSync(guid: string, prop: string | symbol): Promise<any> {\r\n try {\r\n const data = await this._socketService.requestLazyLoad(\r\n guid,\r\n String(prop)\r\n );\r\n return data;\r\n } catch (error) {\r\n console.error('Error fetching data:', error);\r\n throw error;\r\n }\r\n }\r\n public getPlainObject(): Record<string, any> {\r\n const plainObject: Record<string, any> = {};\r\n this.forEach((value, key) => {\r\n if (value instanceof ReactiveDictionary) {\r\n plainObject[key] = value.getPlainObject();\r\n } else if (typeof value === 'string') {\r\n const formattedValue = value\r\n .replace(/'/g, '\"') // Convert single quotes to double quotes\r\n .replace(/\\bNone\\b/g, 'null') // Replace None with null\r\n .replace(/\\bFalse\\b/g, 'false') // Replace False with false\r\n .replace(/\\bTrue\\b/g, 'true'); // Replace True with true\r\n try {\r\n const parsedValue = JSON.parse(formattedValue, this.jsonDateReviver);\r\n plainObject[key] = parsedValue;\r\n } catch {\r\n plainObject[key] = value; // Keep as string if not valid JSON\r\n }\r\n } else {\r\n plainObject[key] = value;\r\n }\r\n });\r\n return plainObject; // Return the plain object\r\n }\r\n private jsonDateReviver(key: string, value: any): any {\r\n // Check if the value is a valid ISO date string\r\n if (\r\n typeof value === 'string' &&\r\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/.test(value)\r\n ) {\r\n return new Date(value); // Convert to JavaScript Date object\r\n }\r\n return value;\r\n }\r\n getAsObservable(key: string): Observable<any> {\r\n return from(this.asyncGet(key));\r\n }\r\n\r\n getTableAsObservable(key: string, data: any = null): Observable<any[]> {\r\n return from(this.getTable(key, data)).pipe(\r\n mergeMap((dictionary) => {\r\n if (!Array.isArray(dictionary)) {\r\n throw new Error('Expected an array but received something else');\r\n }\r\n\r\n const isArrayOfReactiveDictionaries = dictionary.every(\r\n (item) => item instanceof ReactiveDictionary\r\n );\r\n\r\n if (!isArrayOfReactiveDictionaries) {\r\n throw new Error(\r\n 'Expected an array of ReactiveDictionary instances but received something else'\r\n );\r\n }\r\n\r\n // ✅ WRAP THIS IN from(...) to make it emit real data, not a Promise\r\n return from(this.processTableData(dictionary));\r\n })\r\n );\r\n }\r\n async getTable(key: string, data: any = null): Promise<any[]> {\r\n if (!data) data = await this.asyncGet(key); // Get rooms from the ReactiveDictionary\r\n if (!data) return []; // Return an empty array if data is undefined\r\n console.log('getTable', data);\r\n // Filter and get only entries that are instances of ReactiveDictionary\r\n const result =\r\n (await Promise.all(\r\n Array.from(data.entries()).map(async (key: any, index: number) => {\r\n const entry = (await data.asyncGet(key[0])) as ReactiveDictionary;\r\n if (entry instanceof ReactiveDictionary) {\r\n entry.set('__idx', key[0]);\r\n }\r\n return entry;\r\n })\r\n )) || []; // Return an empty array if the above yields undefined\r\n\r\n return result.filter((entry: any) => entry instanceof ReactiveDictionary);\r\n }\r\n async getTableWithoutGuid(key: string): Promise<any[]> {\r\n const data = await this.asyncGet(key);\r\n if (!data) return [];\r\n\r\n // Reuse the common processing logic\r\n return this.processTableData(data);\r\n }\r\n async processTableData(data: any): Promise<any[]> {\r\n if (data instanceof ReactiveDictionary) {\r\n const result =\r\n (await Promise.all(\r\n Array.from(data.entries()).map(async ([key]) => {\r\n const entry = (await data.asyncGet(key)) as ReactiveDictionary;\r\n if (entry instanceof ReactiveDictionary) {\r\n entry.set('__idx', key);\r\n }\r\n return entry;\r\n })\r\n )) || [];\r\n\r\n return result\r\n .filter((entry: any) => entry instanceof ReactiveDictionary)\r\n .map((dictionary) => {\r\n const filteredObject: Record<string, any> = {};\r\n for (const [key, value] of dictionary.entries()) {\r\n if (key !== '__guid') {\r\n filteredObject[key] = value;\r\n }\r\n }\r\n return filteredObject;\r\n });\r\n } else if (Array.isArray(data)) {\r\n // Directly process array of ReactiveDictionary instances\r\n return data.map((dictionary) => {\r\n const filteredObject: Record<string, any> = {};\r\n for (const [key, value] of dictionary.entries()) {\r\n if (key !== '__guid') {\r\n filteredObject[key] = value;\r\n }\r\n }\r\n return filteredObject;\r\n });\r\n } else {\r\n console.warn('processTableData received unexpected data:', data);\r\n return [];\r\n }\r\n }\r\n\r\n // async processTableData(data: any): Promise<any[]> {\r\n // // Filter and get only entries that are instances of ReactiveDictionary\r\n // const result = await Promise.all(\r\n // Array.from(data.entries()).map(async ([key]) => {\r\n // const entry = await data.asyncGet(key) as ReactiveDictionary\r\n // if (entry instanceof ReactiveDictionary) {\r\n // entry.set('__idx', key);\r\n // }\r\n // return entry;\r\n // })\r\n // ) || [];\r\n\r\n // // Filter out entries that are not ReactiveDictionary instances\r\n // const filteredResults = result.filter((entry: any) => entry instanceof ReactiveDictionary);\r\n\r\n // // Remove __guid from each dictionary and return the plain object\r\n // return filteredResults.map(dictionary => {\r\n // const filteredObject: Record<string, any> = {};\r\n // for (const [key, value] of dictionary.entries()) {\r\n // if (key !== '__guid') {\r\n // filteredObject[key] = value;\r\n // }\r\n // }\r\n // return filteredObject;\r\n // });\r\n // }\r\n\r\n onChanges(): Observable<any> {\r\n return this.changes$.asObservable();\r\n }\r\n onDelete(): Observable<any> {\r\n return this.deletes$.asObservable();\r\n }\r\n async update(record: Record<string, any>, key: string = null): Promise<void> {\r\n if (!key) key = this.size.toString();\r\n const dict = await this.asyncGet(key);\r\n for (const key in record) {\r\n if (record.hasOwnProperty(key)) {\r\n const currentValue = await dict.asyncGet(key);\r\n if (currentValue !== record[key]) await dict.asyncSet(key, record[key]);\r\n }\r\n }\r\n }\r\n modelFormList(property: string, value: any): any {\r\n return this.get('__modelFormList');\r\n }\r\n}\r\n","import { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n@BaseModelConfig({\r\n type: 'user',\r\n modelEndpointUrl: 'user/menus'\r\n})\r\nexport class Menu extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'header' })\r\n header?: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n @Attribute({ serializedName: 'link' })\r\n link?: string;\r\n\r\n @Attribute({ serializedName: 'title' })\r\n title?: string;\r\n\r\n @Attribute({ serializedName: 'sublinks' })\r\n sublinks?: Menu[];\r\n\r\n @Attribute({ serializedName: 'target' })\r\n target?: string;\r\n\r\n @Attribute({ serializedName: 'external' })\r\n external?: boolean;\r\n\r\n @Attribute({ serializedName: 'description' })\r\n description?: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order?: number;\r\n\r\n @Attribute({ serializedName: 'translationKey' })\r\n translationKey!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color?: string;\r\n}\r\n\r\n","// import { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n\r\nimport { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n;\r\n\r\n@BaseModelConfig({\r\n type: 'right',\r\n modelEndpointUrl: 'user/rights'\r\n})\r\nexport class Right extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'name' })\r\n name!: string;\r\n\r\n @Attribute({ serializedName: 'rightKey' })\r\n rightKey!: string;\r\n\r\n @Attribute({ serializedName: 'pagePath' })\r\n pagePath!: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order!: number;\r\n\r\n @Attribute({ serializedName: 'isMenu' })\r\n isMenu!: boolean;\r\n\r\n @Attribute({ serializedName: 'resourceName' })\r\n resourceName!: string;\r\n\r\n @Attribute({ serializedName: 'parentId' })\r\n parentId!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color!: string;\r\n\r\n @Attribute({ serializedName: 'defaultRoles' })\r\n defaultRoles!: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n}\r\n","import { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n;\r\n\r\n@BaseModelConfig({\r\n type: 'user'\r\n})\r\nexport class User extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'firstName' })\r\n firstName!: string;\r\n\r\n @Attribute({ serializedName: 'lastName' })\r\n lastName!: string;\r\n\r\n @Attribute({ serializedName: 'email' })\r\n email!: string;\r\n\r\n get fullName(): string {\r\n return this.firstName + ' ' + this.lastName;\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseQueryData, BaseService, DatastoreCore } from \"@rosoftlab/core\";\r\nimport { Observable } from 'rxjs';\r\nimport { Menu } from '../models/menu';\r\nimport { Right } from '../models/right';\r\nimport { User } from '../models/user';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService extends BaseService<User> {\r\n userRights!: Right[]; \r\n constructor(datastore: DatastoreCore) {\r\n super(datastore);\r\n this.setModelType(User);\r\n }\r\n getRights(): Observable<BaseQueryData<Right>> {\r\n const response = this.datastore.findAll(Right);\r\n return response;\r\n }\r\n hasRightForLink(link: string): boolean {\r\n\r\n if (this.userRights && link) {\r\n const right = this.userRights.find(f => link.indexOf(f.pagePath) >= 0);\r\n return true;\r\n }\r\n return false;\r\n }\r\n getMenus(): Observable<BaseQueryData<Menu>> {\r\n const response = this.datastore.findAll(Menu);\r\n return response;\r\n } \r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router, RouterModule } from '@angular/router';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { ButtonsModule } from \"@progress/kendo-angular-buttons\";\r\nimport { KENDO_SVGICON } from '@progress/kendo-angular-icons';\r\nimport { DrawerItemExpandedFn, DrawerSelectEvent, LayoutModule } from '@progress/kendo-angular-layout';\r\nimport { ToolBarModule } from '@progress/kendo-angular-toolbar';\r\nimport * as allIcons from \"@progress/kendo-svg-icons\";\r\nimport { menuIcon, SVGIcon } from \"@progress/kendo-svg-icons\";\r\nimport { map, Observable } from 'rxjs';\r\nimport { Menu } from '../../../models';\r\nimport { ReactiveDictionary } from '../../../reactive-dictionary';\r\nimport { UserService } from '../../../services';\r\n@Component({\r\n selector: 'rdict-full',\r\n templateUrl: './full.component.html',\r\n styleUrls: ['./full.component.scss'],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n TranslateModule,\r\n CommonModule,\r\n ButtonsModule,\r\n ToolBarModule,\r\n LayoutModule,\r\n KENDO_SVGICON\r\n ]\r\n})\r\nexport class FullComponent implements OnInit {\r\n public selected = \"Inbox\";\r\n public menuSvg: SVGIcon = menuIcon;\r\n public expandedIndices = [2];\r\n menu$!: Observable<Menu[]>;\r\n hasItems: boolean = false;\r\n public items: Array<{ [Key: string]: unknown }> = [];\r\n public icons = allIcons;\r\n //private rdict: ReactiveDictionary | undefined;\r\n apptitle: string = \"Test\"\r\n constructor(\r\n private userService: UserService,\r\n private router: Router,\r\n public translate: TranslateService,\r\n private rdict: ReactiveDictionary\r\n ) {\r\n this.getMenu();\r\n }\r\n\r\n async ngOnInit() {\r\n this.apptitle = await this.rdict.asyncGet(\"appname\")\r\n\r\n }\r\n public isItemExpanded: DrawerItemExpandedFn = (item): boolean => {\r\n return this.expandedIndices.indexOf(item.id) >= 0;\r\n };\r\n getMenu() {\r\n this.userService.getMenus().subscribe(\r\n {\r\n next: value => {\r\n this.items = this.transformToDrawerItems(value.getModels())\r\n },\r\n error: err => console.error('Observable emitted an error: ' + err),\r\n complete: () => console.log('Observable emitted the complete notification')\r\n }\r\n )\r\n this.menu$ = this.userService.getMenus().pipe(map(f => {\r\n const data = f.getModels()\r\n this.hasItems = data.length > 0;\r\n return data;\r\n }));\r\n }\r\n // public items: Array<DrawerItem> //= items;\r\n\r\n public onSelect(ev: DrawerSelectEvent): void {\r\n this.selected = ev.item.text;\r\n const current = ev.item.id;\r\n\r\n if (this.expandedIndices.indexOf(current) >= 0) {\r\n this.expandedIndices = this.expandedIndices.filter(\r\n (id) => id !== current\r\n );\r\n } else {\r\n this.expandedIndices.push(current);\r\n }\r\n if (ev.item.path && ev.item.path !== '') {\r\n this.router.navigate([ev.item.path]);\r\n // this.router.navigateByUrl(ev.item.path);\r\n // this.router.navigate(['/import_layout']); \r\n }\r\n }\r\n private transformToDrawerItems(data: Menu[], parentId?: string): any {\r\n let drawerItems: Array<{ [Key: string]: unknown }> = [];\r\n\r\n data.forEach(item => {\r\n const drawerItem = {\r\n id: item.id,\r\n text: this.translate.instant(item.translationKey),\r\n // icon: item.icon,\r\n svgIcon: this.icons[item.icon],\r\n selected: false, // Set this based on your application's state or logic\r\n parentId: parentId,\r\n path: (item.sublinks && item.sublinks.length > 0) ? '' : item.link\r\n };\r\n\r\n drawerItems.push(drawerItem);\r\n\r\n // Recursively process children and flatten them\r\n if (item.sublinks && item.sublinks.length > 0) {\r\n const childItems = this.transformToDrawerItems(item.sublinks, item.id);\r\n drawerItems = drawerItems.concat(childItems); // Add children to the drawerItems array\r\n }\r\n });\r\n\r\n return drawerItems;\r\n }\r\n}\r\n","<div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <!-- <kendo-toolbar-button icon=\"menu\" themeColor=\"tertiary\" (click)=\"drawer.toggle()\"> </kendo-toolbar-button> -->\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\">\r\n <!-- <ng-template kendoDrawerItemTemplate let-item>\r\n <div *ngIf=\"item.path !== ''\" class=\"k-drawer-link\" [routerLink]=\"item.path\">\r\n <kendo-svgicon [icon]=\"item.svgIcon\"></kendo-svgicon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n <div *ngIf=\"item.path == ''\" class=\"k-drawer-link\" >\r\n <kendo-svgicon [icon]=\"item.svgIcon\"></kendo-svgicon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template> -->\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n <!-- <div>{{selected}}</div> -->\r\n <!-- <my-content [selectedItem]=\"selected\"></my-content> -->\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DialogCloseResult, DialogRef, DialogService } from '@progress/kendo-angular-dialog';\nimport { NotificationService, NotificationSettings } from '@progress/kendo-angular-notification';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MaterialDialogService {\n public state: NotificationSettings = {\n content: \"Your data has been saved.\",\n type: { style: \"success\", icon: true },\n animation: { type: \"slide\", duration: 400 },\n hideAfter: 3000,\n };\n constructor(\n public translate: TranslateService,\n private dialogService: DialogService,\n private notificationService: NotificationService\n ) { }\n confirmDelete(): Observable<boolean> {\n return this.confirm(\n this.translate.instant(\"Are you sure you want to delete this record ?\"),\n this.translate.instant(\"Delete Record\"),\n this.translate.instant(\"General.Yes\"),\n this.translate.instant(\"General.No\")\n );\n }\n\n confirm(content?: string, title?: string, confirmButtonText?: string, cancelButtonText?: string): Observable<boolean> {\n const dialog: DialogRef = this.dialogService.open({\n title: title || \"Confirm\",\n content: content || \"Are you sure?\",\n actions: [\n { text: cancelButtonText || \"No\", result: false },\n { text: confirmButtonText || \"Yes\", themeColor: \"primary\", result: true }\n ],\n width: 450,\n height: 200,\n minWidth: 250,\n });\n\n // Return an Observable<boolean>\n return new Observable((observer) => {\n dialog.result.subscribe((result) => {\n if (result instanceof DialogCloseResult) {\n // Dialog was closed without an action\n observer.next(false);\n } else {\n const actionResult = result as { text: string, result: boolean };\n observer.next(actionResult.result);\n }\n observer.complete(); // Complete the observable\n });\n });\n }\n showSaveMessage(message?: string): void {\n this.state.content = message || \"Your data has been saved.\";\n this.state.type = { style: \"success\", icon: true };\n this.notificationService.show(this.state);\n }\n // showRegisteredMessage(message?: string, title?: string): Observable<boolean> {\n\n // }\n // showErrorMessage(e: any, message?: string): Observable<boolean> {\n\n // }\n}\n","import { FormlyExtension, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport class TranslateExtension implements FormlyExtension {\r\n constructor(private translate: TranslateService) { }\r\n prePopulate(field: FormlyFieldConfig) {\r\n const props = field.props || {};\r\n if (!props['translate'] || props['_translated']) {\r\n return;\r\n }\r\n\r\n props['_translated'] = true;\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.label': this.translate.stream(props.label),\r\n };\r\n if (props.placeholder) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.placeholder': this.translate.stream(props.placeholder)\r\n };\r\n }\r\n if (props.description) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.description': this.translate.stream(props.description)\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport function registerTranslateExtension(translate: TranslateService) {\r\n return {\r\n validationMessages: [\r\n {\r\n name: 'required',\r\n message(error: any, field: FormlyFieldConfig) {\r\n // console.log(field);\r\n return translate.stream('General.Field.Required', { field: field.props.label });\r\n },\r\n },\r\n ],\r\n extensions: [\r\n {\r\n name: 'translate',\r\n extension: new TranslateExtension(translate),\r\n }\r\n ],\r\n };\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FORMLY_CONFIG } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { registerTranslateExtension } from '../../translate.extension';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n \r\n ],\r\n providers: [\r\n { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },\r\n ],\r\n})\r\nexport class CrudFormlyTransaltionModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyModule } from '@ngx-formly/core';\r\nimport { FormlyKendoModule } from '@ngx-formly/kendo';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { KENDO_TOOLBAR } from \"@progress/kendo-angular-toolbar\";\r\nimport { SVGIcon, saveIcon } from \"@progress/kendo-svg-icons\";\r\nimport { LocalFileService } from \"@rosoftlab/core\";\r\nimport { Observable } from 'rxjs';\r\nimport { ReactiveDictionary } from '../../reactive-dictionary';\r\nimport { MaterialDialogService } from '../../services/material-dialog.service';\r\nimport { CrudFormlyTransaltionModule } from './rsl-reactive-dictionary.module';\r\n@Component({\r\n selector: 'app-rdict-crud',\r\n templateUrl: './rdict-crud.component.html',\r\n styleUrls: ['./rdict-crud.component.scss'],\r\n imports: [\r\n FormlyModule,\r\n ReactiveFormsModule,\r\n FormlyKendoModule,\r\n TranslateModule,\r\n CrudFormlyTransaltionModule,\r\n KENDO_TOOLBAR\r\n ]\r\n})\r\nexport class RdictCrudComponent implements OnInit {\r\n title: string;\r\n\r\n\r\n basePath: string;\r\n dictPath: string;\r\n rdictModel: string;\r\n\r\n\r\n baseForm = new FormGroup({});\r\n model: any = {};\r\n options: FormlyFormOptions = {};\r\n fields: FormlyFieldConfig[] = [];\r\n fileLayout: string;\r\n modelKey: string | null;\r\n modelRdict: ReactiveDictionary\r\n public saveIcon: SVGIcon = saveIcon;\r\n constructor(\r\n public router: Router,\r\n public route: ActivatedRoute,\r\n public translate: TranslateService,\r\n private rdict: ReactiveDictionary,\r\n private localFileService: LocalFileService,\r\n private dialogService: MaterialDialogService\r\n ) {\r\n\r\n }\r\n\r\n async ngOnInit() {\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'fileLayout', '');\r\n\r\n const currentUrlSegments: string[] = this.router.url.split('/').filter(segment =>\r\n segment !== '' && isNaN(Number(segment))\r\n );\r\n if (['add', 'edit'].includes(currentUrlSegments[currentUrlSegments.length - 1])) {\r\n currentUrlSegments.pop();\r\n }\r\n\r\n this.dictPath = currentUrlSegments.join('.');\r\n this.rdictModel = currentUrlSegments.length > 0 ? currentUrlSegments[currentUrlSegments.length - 1] : '';\r\n const id = this.route.snapshot.paramMap.get('id');\r\n this.modelKey = id ?? null;\r\n this.getModelFields();\r\n this.getModel()\r\n }\r\n\r\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\r\n if (component[key] === undefined) {\r\n let dataFromSnapshot = snapshot.data[key];\r\n if (dataFromSnapshot === null || dataFromSnapshot === undefined) {\r\n dataFromSnapshot = snapshot.params[key];\r\n }\r\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\r\n }\r\n }\r\n\r\n onSubmit(model) {\r\n // this.saveModel(this.baseForm)\r\n }\r\n getModel() {\r\n if (this.modelKey) {\r\n this.rdict.getAsObservable(this.dictPath).subscribe({\r\n next: value => {\r\n value.getAsObservable(this.modelKey).subscribe({\r\n next: modelValue => {\r\n this.modelRdict = modelValue\r\n this.model = this.modelRdict.getPlainObject();\r\n this.modelRdict.onChanges().subscribe(changes => {\r\n if (changes) {\r\n console.log(\"Changes detected:\", changes);\r\n this.baseForm.get(changes.key).patchValue(changes.value)\r\n // this.model[changes.key] = changes.value;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n }\r\n }\r\n getModelFields() {\r\n if (this.rdictModel) {\r\n if (this.fileLayout) {\r\n //load from file\r\n this.localFileService.getJsonData(this.fileLayout).subscribe({\r\n next: value => {\r\n if (value) {\r\n const layout = value.find(item => item.model === this.rdictModel);\r\n this.setLayout(layout?.formLayout);\r\n }\r\n },\r\n error: err => console.error('Error:', err.message),\r\n })\r\n } else\r\n this.rdict.getAsObservable(\"config.models.\" + this.rdictModel + \".formLayout\").subscribe({\r\n next: formLayout => {\r\n if (formLayout) {\r\n this.setLayout(formLayout);\r\n }\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n }\r\n }\r\n private setLayout(formLayout: any) {\r\n this.title = this.translate.instant(formLayout[\"title\"]);\r\n // console.log(formLayout[\"fields\"]);\r\n let fieldsTmp: FormlyFieldConfig[] = formLayout[\"fields\"];\r\n this.fields = this.transformFields(fieldsTmp);\r\n // this.transformJsonToFormlyFields()\r\n }\r\n\r\n // transformJsonToFormlyFields(json: any[]): FormlyFieldConfig[] {\r\n\r\n // // return json.map(field => {\r\n // // if (field.type === 'select' && field.props.options) {\r\n // // field.props.options = this.getSelectData(field.props.options);\r\n // // }\r\n // // return {\r\n // // key: field.key,\r\n // // type: field.type,\r\n // // props: field.props,\r\n // // fieldGroup: field?.fieldGroup\r\n // // };\r\n // // });\r\n // }\r\n transformFields(fields: FormlyFieldConfig[]): FormlyFieldConfig[] {\r\n return fields.map(field => this.transformField(field));\r\n }\r\n private transformField(field: FormlyFieldConfig): FormlyFieldConfig {\r\n // Handle the current field\r\n if (field.type === 'select' && field.props?.options && typeof field.props.options === 'string') {\r\n field.props.options = this.getSelectData(field.props.options);\r\n }\r\n\r\n // Recursively handle fieldGroup\r\n if (field.fieldGroup) {\r\n field.fieldGroup = this.transformFields(field.fieldGroup);\r\n }\r\n\r\n // Recursively handle fieldArray\r\n if (field.fieldArray) {\r\n if (typeof field.fieldArray === 'function') {\r\n const originalFieldArrayFn = field.fieldArray;\r\n field.fieldArray = (fieldConfig: FormlyFieldConfig) => {\r\n const transformedField = this.transformField(originalFieldArrayFn(fieldConfig));\r\n return transformedField;\r\n };\r\n } else {\r\n field.fieldArray = this.transformField(field.fieldArray);\r\n }\r\n }\r\n\r\n return field;\r\n }\r\n public async onSave() {\r\n await this.saveModel(this.baseForm)\r\n }\r\n async saveModel(fg: FormGroup) {\r\n if (fg.valid) {\r\n var dict = await this.rdict.asyncGet(this.dictPath);\r\n await dict.update(fg.value as Record<string, any>, this.modelKey)\r\n this.dialogService.showSaveMessage();\r\n // console.log(fg.value);\r\n } else {\r\n this.validateAllFormFields(fg);\r\n }\r\n }\r\n validateAllFormFields(fg: FormGroup) {\r\n Object.keys(fg.controls).forEach(field => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n public getSelectData(key: string): Observable<any> {\r\n return this.rdict.getTableAsObservable(key)\r\n }\r\n}\r\n","<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n<form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n</form>","import {\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n forwardRef\r\n} from '@angular/core';\r\nimport { KENDO_LABEL } from '@progress/kendo-angular-label';\r\nimport { ToolBarToolComponent } from '@progress/kendo-angular-toolbar';\r\n\r\n@Component({\r\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => RdictTableTitle) }],\r\n selector: 'table-title',\r\n standalone: true,\r\n imports: [\r\n \r\n KENDO_LABEL,\r\n \r\n ],\r\n template: `\r\n <ng-template #toolbarTemplate>\r\n <kendo-label>{{text}}</kendo-label>\r\n </ng-template>\r\n `\r\n})\r\nexport class RdictTableTitle extends ToolBarToolComponent {\r\n public tabindex = -1;\r\n @ViewChild('toolbarTemplate', { static: true }) public declare toolbarTemplate: TemplateRef<any>;\r\n @Input() public text: string;\r\n constructor() {\r\n super();\r\n }\r\n}","import { Component, ElementRef, EventEmitter, Injector, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationStart, Router, RouterModule, UrlSegment } from '@angular/router';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n// import { Rule } from '@rosoftlab/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AddEvent, KENDO_GRID, RemoveEvent } from '@progress/kendo-angular-grid';\r\nimport { KENDO_LABEL } from '@progress/kendo-angular-label';\r\nimport { KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';\r\n// import { ColumnMode, SelectionType, SortDirection } from '@swimlane/ngx-datatable';\r\nimport { KENDO_BUTTONS } from \"@progress/kendo-angular-buttons\";\r\nimport { KENDO_DIALOG } from '@progress/kendo-angular-dialog';\r\nimport { pencilIcon, plusIcon, SVGIcon, trashIcon } from '@progress/kendo-svg-icons';\r\nimport { LocalFileService } from \"@rosoftlab/core\";\r\nimport { ReactiveDictionary } from '../../reactive-dictionary';\r\nimport { MaterialDialogService } from '../../services/material-dialog.service';\r\nimport { RdictTableTitle } from './rdict-table-title';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: 'rsl-rdict-generic-table',\r\n templateUrl: './rdict-generic-table.component.html',\r\n styleUrls: ['./rdict-generic-table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n // MatPaginatorModule,\r\n // MatTableModule,\r\n TranslateModule,\r\n KENDO_GRID,\r\n KENDO_TOOLBAR,\r\n KENDO_LABEL,\r\n KENDO_BUTTONS,\r\n KENDO_DIALOG,\r\n RdictTableTitle\r\n ],\r\n providers: []\r\n})\r\nexport class GenericRdictTableComponent implements OnInit {\r\n\r\n dataSource: unknown[] //MatTableDataSource<any> = new MatTableDataSource();\r\n public title: string;\r\n model: string;\r\n @Input() showSerach: boolean;\r\n @Input() searchFields: string;\r\n @Input() customInclude: string;\r\n @Input() defaultSort: string;\r\n // @Input() defaultSortDirection: SortDirection;\r\n @Input() deletePropertyName: string;\r\n @Input() defaultFilter: string;\r\n @Input() showHeader: boolean;\r\n // @Input() deleteDisableRule: Rule[];\r\n @Input() hasAdd: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() canEdit: boolean;\r\n @Input() editOnClick: boolean = false;\r\n @Input() editOnDblClick: boolean = false;\r\n fileLayout: string;\r\n data: any[] = [];\r\n pageIndex: number = 1;\r\n pageSize: number = 30\r\n\r\n basePath: string;\r\n dictPath: string;\r\n isLoadingResults = true;\r\n isRateLimitReached = false;\r\n\r\n @ViewChild(ElementRef, { static: false }) filter: ElementRef;\r\n // @ViewChild('table') table: MatTable<any>;\r\n // @ViewChild('table', { read: ElementRef }) public matTableRef: ElementRef;\r\n\r\n\r\n @Output() selectedObject: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() click: EventEmitter<{ propertyName: string, model: any }> = new EventEmitter<{ propertyName: string, model: any }>();\r\n @Output() editModel: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n columns = [];\r\n tableLayout = {};\r\n allColumns = [];\r\n displayedColumns: string[];\r\n // ColumnMode = ColumnMode;\r\n // SelectionType = SelectionType;\r\n\r\n readonly headerHeight = 50;\r\n readonly rowHeight = 50;\r\n isLoading: boolean;\r\n filterValue: string;\r\n oldOffsetY: number;\r\n hasSearch: false\r\n selectedItem: any;\r\n public svgEdit: SVGIcon = pencilIcon;\r\n public svgDelete: SVGIcon = trashIcon;\r\n public svgAdd: SVGIcon = plusIcon;\r\n tableRdict: ReactiveDictionary;\r\n editColumn: string | null;\r\n constructor(\r\n public router: Router,\r\n public route: ActivatedRoute,\r\n public translate: TranslateService,\r\n private injector: Injector,\r\n private localFileService: LocalFileService,\r\n private rdict: ReactiveDictionary,\r\n private dialogService: MaterialDialogService) {\r\n }\r\n async ngOnInit() {\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'model', \"\");\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'showSerach', false);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'searchFields', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'customInclude', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSort', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSortDirection', '');\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'deletePropertyName', 'name');\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultFilter', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'showHeader', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'deleteDisableRule', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'hasAdd', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'canDelete', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'canEdit', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'editOnClick', false);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'editOnDblClick', false);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'editColumn', null);\r\n\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'fileLayout', '');\r\n\r\n const currentUrlSegments: UrlSegment[] = this.router.url.split('/').map(segment => new UrlSegment(segment, {}));\r\n this.basePath = currentUrlSegments.map(segment => segment.path).join('/');\r\n const filteredSegments = currentUrlSegments.filter(segment => segment.path !== '');\r\n this.dictPath = filteredSegments.map(segment => segment.path).join('.');\r\n this.model = filteredSegments.length > 0 ? filteredSegments[filteredSegments.length - 1].path : ''; // Default to empty string if no valid segments\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n // Navigation to another page is about to occur\r\n this.data = [];\r\n this.pageIndex = 1\r\n // Perform actions or update component as needed\r\n }\r\n });\r\n this.getListLayout()\r\n this.loadData()\r\n }\r\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\r\n if (component[key] === undefined) {\r\n let dataFromSnapshot = snapshot.data[key];\r\n if (dataFromSnapshot === null || dataFromSnapshot === undefined) {\r\n dataFromSnapshot = snapshot.params[key];\r\n }\r\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\r\n }\r\n }\r\n async loadData() {\r\n this.rdict.getAsObservable(this.dictPath).subscribe({\r\n next: rdictData => {\r\n this.tableRdict = rdictData;\r\n this.tableRdict.onChanges().subscribe({\r\n next: (changes) => {\r\n console.log(\"Changes detected grid:\", changes);\r\n this.onChangeEvent(changes);\r\n }\r\n })\r\n this.tableRdict.onDelete().subscribe({\r\n next: (changes) => {\r\n console.log(\"Delete detected grid:\", changes);\r\n this.ondDeleteEvent(changes);\r\n }\r\n })\r\n this.rdict.getTableAsObservable(this.dictPath, this.tableRdict).subscribe({\r\n next: value => {\r\n this.dataSource = value;\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n\r\n }\r\n onChangeEvent(changes: any) {\r\n if (changes) {\r\n const key = changes?.key as string;\r\n const value = changes?.value;\r\n if (key && value) {\r\n\r\n const index = this.dataSource.findIndex((item: any) => item.__idx === key);\r\n if (index > -1) {\r\n this.dataSource[index] = value;\r\n } else {\r\n //get the object from rdict\r\n this.tableRdict.getAsObservable(key).subscribe({\r\n next: value => {\r\n var dd = value.getPlainObject();\r\n this.dataSource.push(dd);\r\n }\r\n });\r\n\r\n }\r\n }\r\n }\r\n }\r\n ondDeleteEvent(changes: any) {\r\n if (changes) {\r\n const key = changes?.key as string;\r\n if (key) {\r\n const index = this.dataSource.findIndex((item: any) => item.__idx === key);\r\n if (index > -1) {\r\n this.dataSource.splice(index, 1);\r\n }\r\n // this.tableRdict.delete(key)\r\n }\r\n\r\n }\r\n }\r\n getListLayout() {\r\n if (this.model) {\r\n if (this.fileLayout) {\r\n //load from file\r\n this.localFileService.getJsonData(this.fileLayout).subscribe({\r\n next: value => {\r\n if (value) {\r\n const layout = value.find(item => item.model === this.model);\r\n this.setLayout(layout?.tableLayout);\r\n }\r\n },\r\n error: err => console.error('Error:', err.message),\r\n })\r\n } else\r\n //Use rdict layout\r\n this.rdict.getAsObservable(\"config.models.\" + this.model + \".tableLayout\").subscribe(\r\n {\r\n next: value => {\r\n this.setLayout(value);\r\n },\r\n error: err => console.error('Error:', err.message),\r\n }\r\n )\r\n }\r\n }\r\n\r\n private setLayout(layout: any) {\r\n if (layout) {\r\n this.tableLayout = layout;\r\n this.title = this.translate.instant(this.tableLayout[\"title\"]);\r\n this.allColumns = this.tableLayout[\"columns\"].map(item => {\r\n if (!item.isTranslated) {\r\n item.name = this.translate.instant(item.translateKey);\r\n item.isTranslated = true\r\n item.isEditLink = false;\r\n if (this.editColumn && this.editColumn === item.propertyName) {\r\n item.isEditLink = true;\r\n }\r\n }\r\n return item;\r\n });\r\n this.columns = [];\r\n\r\n this.allColumns.sort((a, b) => a.order - b.order);\r\n this.displayedColumns = [];\r\n this.displayedColumns.push.apply(this.displayedColumns, this.allColumns.map(x => x.propertyName));\r\n }\r\n }\r\n public addHandler(): void {\r\n this.router.navigate([`${this.basePath}/add`])\r\n }\r\n public editHandler(args: AddEvent): void {\r\n this.edit(args.dataItem);\r\n // this.editDataItem = args.dataItem;\r\n // this.isNew = false;\r\n }\r\n public edit(dataItem: any): void {\r\n this.router.navigate([`${this.basePath}/edit/${dataItem.__idx}`])\r\n }\r\n public removeHandler(args: RemoveEvent): void {\r\n this.dialogService.confirmDelete().subscribe({\r\n next: (result) => {\r\n if (result) {\r\n this.tableRdict.deleteAsObservable(args.dataItem.__idx).subscribe({\r\n next: (result) => {\r\n this.dataSource.splice(args.rowIndex, 1);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n // this.editService.remove(args.dataItem);\r\n\r\n }\r\n public getCellValue(item: any, propertyName: string): any {\r\n if (item instanceof ReactiveDictionary) {\r\n console.log(item)\r\n } else {\r\n return item[propertyName];\r\n }\r\n }\r\n}\r\n","<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\">\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column.propertyName) }}\r\n </a>\r\n </ng-template>\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column.propertyName) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>","// projects/my-library/src/lib/socket-config.token.ts\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nexport const SOCKET_URL = new InjectionToken<string>('SocketUrl');\r\n","/*\r\n * Public API Surface of rdict\r\n */\r\n\r\nexport * from './lib/core';\r\nexport * from './lib/reactive-dictionary';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i1.SocketService","i1.UserService","i2","i3","i4.ReactiveDictionary","i1","i3.ReactiveDictionary","i4","i5.MaterialDialogService","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rosoftlab-rdict.mjs","sources":["../../../../projects/rosoftlab/rdict/src/lib/services/socket.service.ts","../../../../projects/rosoftlab/rdict/src/lib/reactive-dictionary.ts","../../../../projects/rosoftlab/rdict/src/lib/models/menu.ts","../../../../projects/rosoftlab/rdict/src/lib/models/right.ts","../../../../projects/rosoftlab/rdict/src/lib/models/user.ts","../../../../projects/rosoftlab/rdict/src/lib/services/user.service.ts","../../../../projects/rosoftlab/rdict/src/lib/components/layouts/full/full.component.ts","../../../../projects/rosoftlab/rdict/src/lib/components/layouts/full/full.component.html","../../../../projects/rosoftlab/rdict/src/lib/services/material-dialog.service.ts","../../../../projects/rosoftlab/rdict/src/lib/translate.extension.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-crud/rsl-reactive-dictionary.module.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-crud/rdict-crud.component.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-crud/rdict-crud.component.html","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-generic-table/rdict-table-title.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-generic-table/rdict-generic-table.component.ts","../../../../projects/rosoftlab/rdict/src/lib/components/rdict-generic-table/rdict-generic-table.component.html","../../../../projects/rosoftlab/rdict/src/lib/socket-config.token.ts","../../../../projects/rosoftlab/rdict/src/public-api.ts","../../../../projects/rosoftlab/rdict/src/rosoftlab-rdict.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\r\nimport { io, Socket } from 'socket.io-client';\r\nimport { SOCKET_URL } from '../core';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SocketService {\r\n private socket: Socket;\r\n private socketUrl: string\r\n constructor(\r\n @Inject(SOCKET_URL) socketUrl: string,) {\r\n this.socketUrl = socketUrl\r\n // Replace with your actual server URL\r\n // this.socket.on(\"connect\", () => {\r\n // const engine = this.socket.io.engine;\r\n // (engine.transport.name); // in most cases, prints \"polling\"\r\n\r\n // engine.once(\"upgrade\", () => {\r\n // // called when the transport is upgraded (i.e. from HTTP long-polling to WebSocket)\r\n // (engine.transport.name); // in most cases, prints \"websocket\"\r\n // });\r\n\r\n // });\r\n }\r\n initSocket(authToken: string) {\r\n if (this.socket == null && authToken !== null) {\r\n this.socket = io(this.socketUrl, {\r\n withCredentials: true,\r\n // parser: msgpackParser,\r\n auth: {\r\n token: authToken, // Include the authentication token\r\n }\r\n // ,\r\n // query: {\r\n // \"access_token\": authToken\r\n // }\r\n });\r\n\r\n // const originalEmit = this.socket.emit;\r\n // this.socket.emit = (event, ...args) => {\r\n // // Transform dates before sending\r\n // const transformedData = this.transformDatesForEncoding(args[0]);\r\n // originalEmit.call(this.socket, event, transformedData);\r\n // return this.socket;\r\n // };\r\n\r\n // Intercept incoming data and apply date transformation\r\n // this.socket.onAny((event, data) => {\r\n // const transformedData = this.transformDatesForDecoding(data);\r\n // this.socket.emit(event, transformedData); // Emit the transformed data back\r\n // });\r\n }\r\n }\r\n getInitialData(): Promise<Record<string, any>> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.on('init', (data: any) => {\r\n if (data) {\r\n resolve(data[\"dict_data\"]);\r\n } else {\r\n reject('No data received from init event');\r\n }\r\n });\r\n });\r\n }\r\n getSetEvent(rdict: any) {\r\n this.socket.on('set', (data: any) => {\r\n // (rdict.get('__guid'), data, this.socket.id)\r\n if (rdict.get('__guid') === data.did) {\r\n // ('Set the data')\r\n rdict.asyncSet(data.key, data.value, false)\r\n }\r\n });\r\n }\r\n getDeleteEvent(rdict: any) {\r\n this.socket.on('delete', (data: any) => {\r\n // (rdict.get('__guid'), data, this.socket.id)\r\n if (rdict.get('__guid') === data.did) {\r\n // ('Set the data')\r\n rdict.asyncDelete(data.key, false)\r\n }\r\n });\r\n }\r\n // Emit the 'lazy_load' event with callback to get the response\r\n requestLazyLoad(did: string, key: string): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.emit('lazy_load', { did, key }, (response: any) => {\r\n if (response && response.error) {\r\n reject(response.error); // Handle error if present\r\n } else {\r\n resolve(response); // Resolve with the response data\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Emit the 'set' event to update the data on the server\r\n emitSet(did: string, key: string, value: any): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.emit('set', { did, key, value }, (response: any) => {\r\n if (response && response.error) {\r\n reject(response.error);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Emit the 'set' event to update the data on the server\r\n emitDelete(did: string, key: string): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n this.socket.emit('delete', { did, key }, (response: any) => {\r\n if (response && response.error) {\r\n reject(response.error);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n });\r\n }\r\n\r\n transformDatesForEncoding(obj: any): any {\r\n if (obj instanceof Date) {\r\n return { __date__: obj.toISOString() };\r\n } else if (Array.isArray(obj)) {\r\n return obj.map(this.transformDatesForEncoding);\r\n } else if (obj !== null && typeof obj === \"object\") {\r\n return Object.keys(obj).reduce((acc, key) => {\r\n acc[key] = this.transformDatesForEncoding(obj[key]);\r\n return acc;\r\n }, {} as any);\r\n }\r\n return obj;\r\n }\r\n\r\n transformDatesForDecoding(obj: any): any {\r\n if (typeof obj === \"object\" && obj !== null) {\r\n if (\"__date__\" in obj) {\r\n return new Date(obj.__date__);\r\n }\r\n return Object.keys(obj).reduce((acc, key) => {\r\n acc[key] = this.transformDatesForDecoding(obj[key]);\r\n return acc;\r\n }, {} as any);\r\n }\r\n return obj;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { from, mergeMap, Observable, Subject } from 'rxjs';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { SocketService } from './services/socket.service';\r\n// import { mergeMap } from 'rxjs/operators';\r\n@Injectable({\r\n providedIn: 'root' // This makes the service a singleton and available throughout the app\r\n})\r\nexport class ReactiveDictionary extends Map<string, any> {\r\n private static instance: Map<string, ReactiveDictionary> = new Map<string, ReactiveDictionary>();\r\n private _socketService: SocketService;\r\n private changes$: Subject<any> = new Subject<any>();\r\n private deletes$: Subject<any> = new Subject<any>();\r\n\r\n private isInitialized: boolean = false;\r\n private _authToken: string = null;\r\n constructor(socketService: SocketService) {\r\n super();\r\n\r\n this._socketService = socketService;\r\n // this._socketService.initSocket(authToken)\r\n\r\n // this._socketService.getSetEvent(this)\r\n }\r\n public async initialize(authToken: string) {\r\n this._authToken = authToken;\r\n this._socketService.initSocket(authToken);\r\n this._socketService.getSetEvent(this);\r\n this._socketService.getDeleteEvent(this);\r\n await this.asyncInit();\r\n }\r\n\r\n // override keys(): IterableIterator<string> {\r\n // const excludedKeys = ['__guid', '__type']; // Key to exclude\r\n // const iterator = super.keys();\r\n\r\n // const filteredIterator = {\r\n // [Symbol.iterator]: () => ({\r\n // next: () => {\r\n // let result;\r\n\r\n // // Loop until we find a valid key or run out of keys\r\n // do {\r\n // result = iterator.next(); // Get the next entry ([key, value])\r\n // if (result.done) return { done: true }; // Stop if done\r\n\r\n // const key = result.value; // Destructure the entry\r\n // const value = super.get(key);\r\n // // Check if the key is in excludedKeys or if the value is an object\r\n // if (!excludedKeys.includes(key) && !(typeof value === 'object' && value !== null)) {\r\n // return { value: key, done: false }; // Return the valid key\r\n // }\r\n // } while (true); // Continue until a valid key is found\r\n // }\r\n // })\r\n // };\r\n\r\n // return filteredIterator as IterableIterator<string>;\r\n // }\r\n // Asynchronous method to get a value by key\r\n async asyncGet(key: string): Promise<any> {\r\n // console.log('Get key: ', key);\r\n const keys = key.split('.');\r\n if (keys.length === 1) {\r\n if (this.has(key)) {\r\n const value = this.get(key);\r\n if (value instanceof ReactiveDictionary) {\r\n return value;\r\n }\r\n if (typeof value === 'object' && value !== null) {\r\n const dict_type = value['__type'];\r\n // console.log('value type : ', dict_type);\r\n if (dict_type === 'dict' || dict_type === 'lazy') {\r\n const lazyLoadData = await this.lazyLoadSync(this.get('__guid'), key);\r\n // console.log(lazyLoadData)\r\n if (lazyLoadData) {\r\n const dict = new ReactiveDictionary(this._socketService);\r\n dict.initialize(this._authToken);\r\n await dict.asyncInit(lazyLoadData.data);\r\n this.set(key, dict);\r\n return dict;\r\n }\r\n }\r\n }\r\n return value;\r\n } else {\r\n const dict = new ReactiveDictionary(this._socketService);\r\n dict.initialize(this._authToken);\r\n dict.set('__guid', uuidv4());\r\n dict.set('__type', 'dict');\r\n this.set(key, dict);\r\n await this._socketService.emitSet(this.get('__guid'), key, this.transform_for_serialization(dict));\r\n return dict;\r\n }\r\n } else {\r\n const obj = (await this.asyncGet(keys[0])) as ReactiveDictionary;\r\n if (obj) return await obj.asyncGet(keys.slice(1).join('.'));\r\n else return null;\r\n }\r\n }\r\n transform_for_serialization(value: any) {\r\n // Transform a value to a format that can be serialized.\r\n const dict_type = value['__type'];\r\n if (dict_type === 'lazy') return { __type: 'lazy' };\r\n else if (value instanceof ReactiveDictionary) return { __type: 'dict', __guid: value.get('__guid') };\r\n else return value;\r\n }\r\n // Asynchronous method to set a value by key\r\n async asyncSet(key: string, value: any, emmit_event: boolean = true): Promise<void> {\r\n if (emmit_event) {\r\n try {\r\n await this._socketService.emitSet(this.get('__guid'), key, value);\r\n } catch (error) {\r\n console.error('Error emitting set event:', error);\r\n }\r\n }\r\n this.set(key, value);\r\n this.changes$.next({ key, value });\r\n }\r\n async asyncDelete(key: string, emmit_event: boolean = true): Promise<void> {\r\n if (this.has(key)) {\r\n if (emmit_event) {\r\n try {\r\n await this._socketService.emitDelete(this.get('__guid'), key);\r\n } catch (error) {\r\n console.error('Error emitting set event:', error);\r\n }\r\n }\r\n this.delete(key);\r\n this.deletes$.next({ key });\r\n }\r\n }\r\n deleteAsObservable(key: string, emmit_event: boolean = true): Observable<any> {\r\n return from(this.asyncDelete(key, emmit_event));\r\n }\r\n // Asynchronous method to initialize with a set of key-value pairs\r\n async asyncInit(initialData?: Record<string, any>) {\r\n if (!this.isInitialized) {\r\n try {\r\n // If initial data is not provided, fetch it\r\n const data = initialData || (await this._socketService.getInitialData());\r\n // this.known_dicts.set(data.__guid,data);\r\n // Set the initial properties on the proxy\r\n for (const [key, value] of Object.entries(data)) {\r\n this.set(key, value);\r\n }\r\n this.isInitialized = true;\r\n } catch (error) {\r\n console.error('Error during initialization:', error);\r\n }\r\n }\r\n }\r\n\r\n async lazyLoadSync(guid: string, prop: string | symbol): Promise<any> {\r\n try {\r\n const data = await this._socketService.requestLazyLoad(guid, String(prop));\r\n return data;\r\n } catch (error) {\r\n console.error('Error fetching data:', error);\r\n throw error;\r\n }\r\n }\r\n public getPlainObject(): Record<string, any> {\r\n const plainObject: Record<string, any> = {};\r\n this.forEach((value, key) => {\r\n if (value instanceof ReactiveDictionary) {\r\n plainObject[key] = value.getPlainObject();\r\n } else if (typeof value === 'string') {\r\n const formattedValue = value\r\n .replace(/'/g, '\"') // Convert single quotes to double quotes\r\n .replace(/\\bNone\\b/g, 'null') // Replace None with null\r\n .replace(/\\bFalse\\b/g, 'false') // Replace False with false\r\n .replace(/\\bTrue\\b/g, 'true'); // Replace True with true\r\n try {\r\n const parsedValue = JSON.parse(formattedValue, this.jsonDateReviver);\r\n plainObject[key] = parsedValue;\r\n } catch {\r\n plainObject[key] = value; // Keep as string if not valid JSON\r\n }\r\n } else {\r\n plainObject[key] = value;\r\n }\r\n });\r\n return plainObject; // Return the plain object\r\n }\r\n private jsonDateReviver(key: string, value: any): any {\r\n // Check if the value is a valid ISO date string\r\n if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/.test(value)) {\r\n return new Date(value); // Convert to JavaScript Date object\r\n }\r\n return value;\r\n }\r\n getAsObservable(key: string): Observable<any> {\r\n return from(this.asyncGet(key));\r\n }\r\n\r\n getTableAsObservable(key: string, data: any = null): Observable<any[]> {\r\n return from(this.getTable(key, data)).pipe(\r\n mergeMap((dictionaryMap) => {\r\n if (!(dictionaryMap instanceof Map)) {\r\n throw new Error('Expected a Map but received something else');\r\n }\r\n\r\n const values = Array.from(dictionaryMap.values());\r\n\r\n const isValid = values.every((item) => item instanceof ReactiveDictionary);\r\n\r\n if (!isValid) {\r\n throw new Error('Expected a Map of ReactiveDictionary instances but found invalid entries');\r\n }\r\n\r\n return from(this.processTableData(values));\r\n })\r\n );\r\n }\r\n\r\n getTableAsObservable_old(key: string, data: any = null): Observable<any[]> {\r\n return from(this.getTable(key, data)).pipe(\r\n mergeMap((dictionary) => {\r\n if (!Array.isArray(dictionary)) {\r\n throw new Error('Expected an array but received something else');\r\n }\r\n\r\n const isArrayOfReactiveDictionaries = dictionary.every((item) => item instanceof ReactiveDictionary);\r\n\r\n if (!isArrayOfReactiveDictionaries) {\r\n throw new Error('Expected an array of ReactiveDictionary instances but received something else');\r\n }\r\n\r\n // ✅ WRAP THIS IN from(...) to make it emit real data, not a Promise\r\n return from(this.processTableData(dictionary));\r\n })\r\n );\r\n }\r\n async getTable(key: string, data: any = null): Promise<Map<string, ReactiveDictionary>> {\r\n if (!data) data = await this.asyncGet(key);\r\n if (!data) return new Map();\r\n\r\n console.log('getTable', data);\r\n\r\n const entries = await Promise.all(\r\n Array.from(data.entries()).map(async ([k, v]) => {\r\n const entry = (await data.asyncGet(k)) as ReactiveDictionary;\r\n if (entry instanceof ReactiveDictionary) {\r\n entry.set('__idx', k);\r\n return [k, entry] as [string, ReactiveDictionary];\r\n }\r\n return null;\r\n })\r\n );\r\n\r\n // Filter out any nulls (non-ReactiveDictionary entries)\r\n const validEntries = entries.filter((e): e is [string, ReactiveDictionary] => e !== null);\r\n\r\n return new Map(validEntries);\r\n }\r\n\r\n async getTable_old(key: string, data: any = null): Promise<any[]> {\r\n if (!data) data = await this.asyncGet(key); // Get rooms from the ReactiveDictionary\r\n if (!data) return []; // Return an empty array if data is undefined\r\n console.log('getTable', data);\r\n // Filter and get only entries that are instances of ReactiveDictionary\r\n const result =\r\n (await Promise.all(\r\n Array.from(data.entries()).map(async (key: any, index: number) => {\r\n const entry = (await data.asyncGet(key[0])) as ReactiveDictionary;\r\n if (entry instanceof ReactiveDictionary) {\r\n entry.set('__idx', key[0]);\r\n }\r\n return entry;\r\n })\r\n )) || []; // Return an empty array if the above yields undefined\r\n\r\n return result.filter((entry: any) => entry instanceof ReactiveDictionary);\r\n }\r\n async getTableWithoutGuid(key: string): Promise<any[]> {\r\n const data = await this.asyncGet(key);\r\n if (!data) return [];\r\n\r\n // Reuse the common processing logic\r\n return this.processTableData(data);\r\n }\r\n async processTableData(data: any): Promise<any[]> {\r\n if (data instanceof ReactiveDictionary) {\r\n const result =\r\n (await Promise.all(\r\n Array.from(data.entries()).map(async ([key]) => {\r\n const entry = (await data.asyncGet(key)) as ReactiveDictionary;\r\n if (entry instanceof ReactiveDictionary) {\r\n entry.set('__idx', key);\r\n }\r\n return entry;\r\n })\r\n )) || [];\r\n\r\n return result\r\n .filter((entry: any) => entry instanceof ReactiveDictionary)\r\n .map((dictionary) => {\r\n const filteredObject: Record<string, any> = {};\r\n for (const [key, value] of dictionary.entries()) {\r\n if (key !== '__guid') {\r\n filteredObject[key] = value;\r\n }\r\n }\r\n return filteredObject;\r\n });\r\n } else if (Array.isArray(data)) {\r\n // Directly process array of ReactiveDictionary instances\r\n return data.map((dictionary) => {\r\n const filteredObject: Record<string, any> = {};\r\n for (const [key, value] of dictionary.entries()) {\r\n if (key !== '__guid') {\r\n filteredObject[key] = value;\r\n }\r\n }\r\n return filteredObject;\r\n });\r\n } else {\r\n console.warn('processTableData received unexpected data:', data);\r\n return [];\r\n }\r\n }\r\n\r\n // async processTableData(data: any): Promise<any[]> {\r\n // // Filter and get only entries that are instances of ReactiveDictionary\r\n // const result = await Promise.all(\r\n // Array.from(data.entries()).map(async ([key]) => {\r\n // const entry = await data.asyncGet(key) as ReactiveDictionary\r\n // if (entry instanceof ReactiveDictionary) {\r\n // entry.set('__idx', key);\r\n // }\r\n // return entry;\r\n // })\r\n // ) || [];\r\n\r\n // // Filter out entries that are not ReactiveDictionary instances\r\n // const filteredResults = result.filter((entry: any) => entry instanceof ReactiveDictionary);\r\n\r\n // // Remove __guid from each dictionary and return the plain object\r\n // return filteredResults.map(dictionary => {\r\n // const filteredObject: Record<string, any> = {};\r\n // for (const [key, value] of dictionary.entries()) {\r\n // if (key !== '__guid') {\r\n // filteredObject[key] = value;\r\n // }\r\n // }\r\n // return filteredObject;\r\n // });\r\n // }\r\n\r\n onChanges(): Observable<any> {\r\n return this.changes$.asObservable();\r\n }\r\n onDelete(): Observable<any> {\r\n return this.deletes$.asObservable();\r\n }\r\n private getNextOid(): string | null {\r\n const numericKeys = Array.from(this.keys())\r\n .filter((k) => /^\\d+$/.test(k)) // keep only purely numeric keys\r\n .map((k) => parseInt(k, 10));\r\n\r\n if (numericKeys.length === 0) return null;\r\n\r\n const maxKey = Math.max(...numericKeys);\r\n return (maxKey + 1).toString();\r\n }\r\n\r\n async update(record: Record<string, any>, key: string = null): Promise<void> {\r\n if (!key) key = this.getNextOid();\r\n const dict = await this.asyncGet(key);\r\n for (const key in record) {\r\n if (record.hasOwnProperty(key)) {\r\n const currentValue = await dict.asyncGet(key);\r\n if (currentValue !== record[key]) await dict.asyncSet(key, record[key]);\r\n }\r\n }\r\n }\r\n modelFormList(property: string, value: any): any {\r\n return this.get('__modelFormList');\r\n }\r\n}\r\n","import { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n@BaseModelConfig({\r\n type: 'user',\r\n modelEndpointUrl: 'user/menus'\r\n})\r\nexport class Menu extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'header' })\r\n header?: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n @Attribute({ serializedName: 'link' })\r\n link?: string;\r\n\r\n @Attribute({ serializedName: 'title' })\r\n title?: string;\r\n\r\n @Attribute({ serializedName: 'sublinks' })\r\n sublinks?: Menu[];\r\n\r\n @Attribute({ serializedName: 'target' })\r\n target?: string;\r\n\r\n @Attribute({ serializedName: 'external' })\r\n external?: boolean;\r\n\r\n @Attribute({ serializedName: 'description' })\r\n description?: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order?: number;\r\n\r\n @Attribute({ serializedName: 'translationKey' })\r\n translationKey!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color?: string;\r\n}\r\n\r\n","// import { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n\r\nimport { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n;\r\n\r\n@BaseModelConfig({\r\n type: 'right',\r\n modelEndpointUrl: 'user/rights'\r\n})\r\nexport class Right extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'name' })\r\n name!: string;\r\n\r\n @Attribute({ serializedName: 'rightKey' })\r\n rightKey!: string;\r\n\r\n @Attribute({ serializedName: 'pagePath' })\r\n pagePath!: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order!: number;\r\n\r\n @Attribute({ serializedName: 'isMenu' })\r\n isMenu!: boolean;\r\n\r\n @Attribute({ serializedName: 'resourceName' })\r\n resourceName!: string;\r\n\r\n @Attribute({ serializedName: 'parentId' })\r\n parentId!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color!: string;\r\n\r\n @Attribute({ serializedName: 'defaultRoles' })\r\n defaultRoles!: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n}\r\n","import { Attribute, BaseModel, BaseModelConfig } from '@rosoftlab/core';\r\n;\r\n\r\n@BaseModelConfig({\r\n type: 'user'\r\n})\r\nexport class User extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'firstName' })\r\n firstName!: string;\r\n\r\n @Attribute({ serializedName: 'lastName' })\r\n lastName!: string;\r\n\r\n @Attribute({ serializedName: 'email' })\r\n email!: string;\r\n\r\n get fullName(): string {\r\n return this.firstName + ' ' + this.lastName;\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseQueryData, BaseService, DatastoreCore } from \"@rosoftlab/core\";\r\nimport { Observable } from 'rxjs';\r\nimport { Menu } from '../models/menu';\r\nimport { Right } from '../models/right';\r\nimport { User } from '../models/user';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService extends BaseService<User> {\r\n userRights!: Right[]; \r\n constructor(datastore: DatastoreCore) {\r\n super(datastore);\r\n this.setModelType(User);\r\n }\r\n getRights(): Observable<BaseQueryData<Right>> {\r\n const response = this.datastore.findAll(Right);\r\n return response;\r\n }\r\n hasRightForLink(link: string): boolean {\r\n\r\n if (this.userRights && link) {\r\n const right = this.userRights.find(f => link.indexOf(f.pagePath) >= 0);\r\n return true;\r\n }\r\n return false;\r\n }\r\n getMenus(): Observable<BaseQueryData<Menu>> {\r\n const response = this.datastore.findAll(Menu);\r\n return response;\r\n } \r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router, RouterModule } from '@angular/router';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { ButtonsModule } from \"@progress/kendo-angular-buttons\";\r\nimport { KENDO_SVGICON } from '@progress/kendo-angular-icons';\r\nimport { DrawerItemExpandedFn, DrawerSelectEvent, LayoutModule } from '@progress/kendo-angular-layout';\r\nimport { ToolBarModule } from '@progress/kendo-angular-toolbar';\r\nimport * as allIcons from \"@progress/kendo-svg-icons\";\r\nimport { menuIcon, SVGIcon } from \"@progress/kendo-svg-icons\";\r\nimport { map, Observable } from 'rxjs';\r\nimport { Menu } from '../../../models';\r\nimport { ReactiveDictionary } from '../../../reactive-dictionary';\r\nimport { UserService } from '../../../services';\r\n@Component({\r\n selector: 'rdict-full',\r\n templateUrl: './full.component.html',\r\n styleUrls: ['./full.component.scss'],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n TranslateModule,\r\n CommonModule,\r\n ButtonsModule,\r\n ToolBarModule,\r\n LayoutModule,\r\n KENDO_SVGICON\r\n ]\r\n})\r\nexport class FullComponent implements OnInit {\r\n public selected = \"Inbox\";\r\n public menuSvg: SVGIcon = menuIcon;\r\n public expandedIndices = [2];\r\n menu$!: Observable<Menu[]>;\r\n hasItems: boolean = false;\r\n public items: Array<{ [Key: string]: unknown }> = [];\r\n public icons = allIcons;\r\n //private rdict: ReactiveDictionary | undefined;\r\n apptitle: string = \"Test\"\r\n constructor(\r\n private userService: UserService,\r\n private router: Router,\r\n public translate: TranslateService,\r\n private rdict: ReactiveDictionary\r\n ) {\r\n this.getMenu();\r\n }\r\n\r\n async ngOnInit() {\r\n this.apptitle = await this.rdict.asyncGet(\"appname\")\r\n\r\n }\r\n public isItemExpanded: DrawerItemExpandedFn = (item): boolean => {\r\n return this.expandedIndices.indexOf(item.id) >= 0;\r\n };\r\n getMenu() {\r\n this.userService.getMenus().subscribe(\r\n {\r\n next: value => {\r\n this.items = this.transformToDrawerItems(value.getModels())\r\n },\r\n error: err => console.error('Observable emitted an error: ' + err),\r\n complete: () => console.log('Observable emitted the complete notification')\r\n }\r\n )\r\n this.menu$ = this.userService.getMenus().pipe(map(f => {\r\n const data = f.getModels()\r\n this.hasItems = data.length > 0;\r\n return data;\r\n }));\r\n }\r\n // public items: Array<DrawerItem> //= items;\r\n\r\n public onSelect(ev: DrawerSelectEvent): void {\r\n this.selected = ev.item.text;\r\n const current = ev.item.id;\r\n\r\n if (this.expandedIndices.indexOf(current) >= 0) {\r\n this.expandedIndices = this.expandedIndices.filter(\r\n (id) => id !== current\r\n );\r\n } else {\r\n this.expandedIndices.push(current);\r\n }\r\n if (ev.item.path && ev.item.path !== '') {\r\n this.router.navigate([ev.item.path]);\r\n // this.router.navigateByUrl(ev.item.path);\r\n // this.router.navigate(['/import_layout']); \r\n }\r\n }\r\n private transformToDrawerItems(data: Menu[], parentId?: string): any {\r\n let drawerItems: Array<{ [Key: string]: unknown }> = [];\r\n\r\n data.forEach(item => {\r\n const drawerItem = {\r\n id: item.id,\r\n text: this.translate.instant(item.translationKey),\r\n // icon: item.icon,\r\n svgIcon: this.icons[item.icon],\r\n selected: false, // Set this based on your application's state or logic\r\n parentId: parentId,\r\n path: (item.sublinks && item.sublinks.length > 0) ? '' : item.link\r\n };\r\n\r\n drawerItems.push(drawerItem);\r\n\r\n // Recursively process children and flatten them\r\n if (item.sublinks && item.sublinks.length > 0) {\r\n const childItems = this.transformToDrawerItems(item.sublinks, item.id);\r\n drawerItems = drawerItems.concat(childItems); // Add children to the drawerItems array\r\n }\r\n });\r\n\r\n return drawerItems;\r\n }\r\n}\r\n","<div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <!-- <kendo-toolbar-button icon=\"menu\" themeColor=\"tertiary\" (click)=\"drawer.toggle()\"> </kendo-toolbar-button> -->\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\">\r\n <!-- <ng-template kendoDrawerItemTemplate let-item>\r\n <div *ngIf=\"item.path !== ''\" class=\"k-drawer-link\" [routerLink]=\"item.path\">\r\n <kendo-svgicon [icon]=\"item.svgIcon\"></kendo-svgicon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n <div *ngIf=\"item.path == ''\" class=\"k-drawer-link\" >\r\n <kendo-svgicon [icon]=\"item.svgIcon\"></kendo-svgicon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template> -->\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n <!-- <div>{{selected}}</div> -->\r\n <!-- <my-content [selectedItem]=\"selected\"></my-content> -->\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DialogCloseResult, DialogRef, DialogService } from '@progress/kendo-angular-dialog';\nimport { NotificationService, NotificationSettings } from '@progress/kendo-angular-notification';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MaterialDialogService {\n public state: NotificationSettings = {\n content: \"Your data has been saved.\",\n type: { style: \"success\", icon: true },\n animation: { type: \"slide\", duration: 400 },\n hideAfter: 3000,\n };\n constructor(\n public translate: TranslateService,\n private dialogService: DialogService,\n private notificationService: NotificationService\n ) { }\n confirmDelete(): Observable<boolean> {\n return this.confirm(\n this.translate.instant(\"Are you sure you want to delete this record ?\"),\n this.translate.instant(\"Delete Record\"),\n this.translate.instant(\"General.Yes\"),\n this.translate.instant(\"General.No\")\n );\n }\n\n confirm(content?: string, title?: string, confirmButtonText?: string, cancelButtonText?: string): Observable<boolean> {\n const dialog: DialogRef = this.dialogService.open({\n title: title || \"Confirm\",\n content: content || \"Are you sure?\",\n actions: [\n { text: cancelButtonText || \"No\", result: false },\n { text: confirmButtonText || \"Yes\", themeColor: \"primary\", result: true }\n ],\n width: 450,\n height: 200,\n minWidth: 250,\n });\n\n // Return an Observable<boolean>\n return new Observable((observer) => {\n dialog.result.subscribe((result) => {\n if (result instanceof DialogCloseResult) {\n // Dialog was closed without an action\n observer.next(false);\n } else {\n const actionResult = result as { text: string, result: boolean };\n observer.next(actionResult.result);\n }\n observer.complete(); // Complete the observable\n });\n });\n }\n showSaveMessage(message?: string): void {\n this.state.content = message || \"Your data has been saved.\";\n this.state.type = { style: \"success\", icon: true };\n this.notificationService.show(this.state);\n }\n // showRegisteredMessage(message?: string, title?: string): Observable<boolean> {\n\n // }\n // showErrorMessage(e: any, message?: string): Observable<boolean> {\n\n // }\n}\n","import { FormlyExtension, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport class TranslateExtension implements FormlyExtension {\r\n constructor(private translate: TranslateService) { }\r\n prePopulate(field: FormlyFieldConfig) {\r\n const props = field.props || {};\r\n if (!props['translate'] || props['_translated']) {\r\n return;\r\n }\r\n\r\n props['_translated'] = true;\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.label': this.translate.stream(props.label),\r\n };\r\n if (props.placeholder) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.placeholder': this.translate.stream(props.placeholder)\r\n };\r\n }\r\n if (props.description) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.description': this.translate.stream(props.description)\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport function registerTranslateExtension(translate: TranslateService) {\r\n return {\r\n validationMessages: [\r\n {\r\n name: 'required',\r\n message(error: any, field: FormlyFieldConfig) {\r\n // console.log(field);\r\n return translate.stream('General.Field.Required', { field: field.props.label });\r\n },\r\n },\r\n ],\r\n extensions: [\r\n {\r\n name: 'translate',\r\n extension: new TranslateExtension(translate),\r\n }\r\n ],\r\n };\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FORMLY_CONFIG } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { registerTranslateExtension } from '../../translate.extension';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n \r\n ],\r\n providers: [\r\n { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },\r\n ],\r\n})\r\nexport class CrudFormlyTransaltionModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyModule } from '@ngx-formly/core';\r\nimport { FormlyKendoModule } from '@ngx-formly/kendo';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { KENDO_TOOLBAR } from \"@progress/kendo-angular-toolbar\";\r\nimport { SVGIcon, saveIcon } from \"@progress/kendo-svg-icons\";\r\nimport { LocalFileService } from \"@rosoftlab/core\";\r\nimport { Observable } from 'rxjs';\r\nimport { ReactiveDictionary } from '../../reactive-dictionary';\r\nimport { MaterialDialogService } from '../../services/material-dialog.service';\r\nimport { CrudFormlyTransaltionModule } from './rsl-reactive-dictionary.module';\r\n@Component({\r\n selector: 'app-rdict-crud',\r\n templateUrl: './rdict-crud.component.html',\r\n styleUrls: ['./rdict-crud.component.scss'],\r\n imports: [\r\n FormlyModule,\r\n ReactiveFormsModule,\r\n FormlyKendoModule,\r\n TranslateModule,\r\n CrudFormlyTransaltionModule,\r\n KENDO_TOOLBAR\r\n ]\r\n})\r\nexport class RdictCrudComponent implements OnInit {\r\n title: string;\r\n\r\n\r\n basePath: string;\r\n dictPath: string;\r\n rdictModel: string;\r\n\r\n\r\n baseForm = new FormGroup({});\r\n model: any = {};\r\n options: FormlyFormOptions = {};\r\n fields: FormlyFieldConfig[] = [];\r\n fileLayout: string;\r\n modelKey: string | null;\r\n modelRdict: ReactiveDictionary\r\n public saveIcon: SVGIcon = saveIcon;\r\n constructor(\r\n public router: Router,\r\n public route: ActivatedRoute,\r\n public translate: TranslateService,\r\n private rdict: ReactiveDictionary,\r\n private localFileService: LocalFileService,\r\n private dialogService: MaterialDialogService\r\n ) {\r\n\r\n }\r\n\r\n async ngOnInit() {\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'fileLayout', '');\r\n\r\n const currentUrlSegments: string[] = this.router.url.split('/').filter(segment =>\r\n segment !== '' && isNaN(Number(segment))\r\n );\r\n if (['add', 'edit'].includes(currentUrlSegments[currentUrlSegments.length - 1])) {\r\n currentUrlSegments.pop();\r\n }\r\n\r\n this.dictPath = currentUrlSegments.join('.');\r\n this.rdictModel = currentUrlSegments.length > 0 ? currentUrlSegments[currentUrlSegments.length - 1] : '';\r\n const id = this.route.snapshot.paramMap.get('id');\r\n this.modelKey = id ?? null;\r\n this.getModelFields();\r\n this.getModel()\r\n }\r\n\r\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\r\n if (component[key] === undefined) {\r\n let dataFromSnapshot = snapshot.data[key];\r\n if (dataFromSnapshot === null || dataFromSnapshot === undefined) {\r\n dataFromSnapshot = snapshot.params[key];\r\n }\r\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\r\n }\r\n }\r\n\r\n onSubmit(model) {\r\n // this.saveModel(this.baseForm)\r\n }\r\n getModel() {\r\n if (this.modelKey) {\r\n this.rdict.getAsObservable(this.dictPath).subscribe({\r\n next: value => {\r\n value.getAsObservable(this.modelKey).subscribe({\r\n next: modelValue => {\r\n this.modelRdict = modelValue\r\n this.model = this.modelRdict.getPlainObject();\r\n this.modelRdict.onChanges().subscribe(changes => {\r\n if (changes) {\r\n console.log(\"Changes detected:\", changes);\r\n this.baseForm.get(changes.key).patchValue(changes.value)\r\n // this.model[changes.key] = changes.value;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n }\r\n }\r\n getModelFields() {\r\n if (this.rdictModel) {\r\n if (this.fileLayout) {\r\n //load from file\r\n this.localFileService.getJsonData(this.fileLayout).subscribe({\r\n next: value => {\r\n if (value) {\r\n const layout = value.find(item => item.model === this.rdictModel);\r\n this.setLayout(layout?.formLayout);\r\n }\r\n },\r\n error: err => console.error('Error:', err.message),\r\n })\r\n } else\r\n this.rdict.getAsObservable(\"config.models.\" + this.rdictModel + \".formLayout\").subscribe({\r\n next: formLayout => {\r\n if (formLayout) {\r\n this.setLayout(formLayout);\r\n }\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n }\r\n }\r\n private setLayout(formLayout: any) {\r\n this.title = this.translate.instant(formLayout[\"title\"]);\r\n // console.log(formLayout[\"fields\"]);\r\n let fieldsTmp: FormlyFieldConfig[] = formLayout[\"fields\"];\r\n this.fields = this.transformFields(fieldsTmp);\r\n // this.transformJsonToFormlyFields()\r\n }\r\n\r\n // transformJsonToFormlyFields(json: any[]): FormlyFieldConfig[] {\r\n\r\n // // return json.map(field => {\r\n // // if (field.type === 'select' && field.props.options) {\r\n // // field.props.options = this.getSelectData(field.props.options);\r\n // // }\r\n // // return {\r\n // // key: field.key,\r\n // // type: field.type,\r\n // // props: field.props,\r\n // // fieldGroup: field?.fieldGroup\r\n // // };\r\n // // });\r\n // }\r\n transformFields(fields: FormlyFieldConfig[]): FormlyFieldConfig[] {\r\n return fields.map(field => this.transformField(field));\r\n }\r\n private transformField(field: FormlyFieldConfig): FormlyFieldConfig {\r\n // Handle the current field\r\n if (field.type === 'select' && field.props?.options && typeof field.props.options === 'string') {\r\n field.props.options = this.getSelectData(field.props.options);\r\n }\r\n\r\n // Recursively handle fieldGroup\r\n if (field.fieldGroup) {\r\n field.fieldGroup = this.transformFields(field.fieldGroup);\r\n }\r\n\r\n // Recursively handle fieldArray\r\n if (field.fieldArray) {\r\n if (typeof field.fieldArray === 'function') {\r\n const originalFieldArrayFn = field.fieldArray;\r\n field.fieldArray = (fieldConfig: FormlyFieldConfig) => {\r\n const transformedField = this.transformField(originalFieldArrayFn(fieldConfig));\r\n return transformedField;\r\n };\r\n } else {\r\n field.fieldArray = this.transformField(field.fieldArray);\r\n }\r\n }\r\n\r\n return field;\r\n }\r\n public async onSave() {\r\n await this.saveModel(this.baseForm)\r\n }\r\n async saveModel(fg: FormGroup) {\r\n if (fg.valid) {\r\n var dict = await this.rdict.asyncGet(this.dictPath);\r\n await dict.update(fg.value as Record<string, any>, this.modelKey)\r\n this.dialogService.showSaveMessage();\r\n // console.log(fg.value);\r\n } else {\r\n this.validateAllFormFields(fg);\r\n }\r\n }\r\n validateAllFormFields(fg: FormGroup) {\r\n Object.keys(fg.controls).forEach(field => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n public getSelectData(key: string): Observable<any> {\r\n return this.rdict.getTableAsObservable(key)\r\n }\r\n}\r\n","<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n","import {\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n forwardRef\r\n} from '@angular/core';\r\nimport { KENDO_LABEL } from '@progress/kendo-angular-label';\r\nimport { ToolBarToolComponent } from '@progress/kendo-angular-toolbar';\r\n\r\n@Component({\r\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => RdictTableTitle) }],\r\n selector: 'table-title',\r\n standalone: true,\r\n imports: [\r\n \r\n KENDO_LABEL,\r\n \r\n ],\r\n template: `\r\n <ng-template #toolbarTemplate>\r\n <kendo-label>{{text}}</kendo-label>\r\n </ng-template>\r\n `\r\n})\r\nexport class RdictTableTitle extends ToolBarToolComponent {\r\n public tabindex = -1;\r\n @ViewChild('toolbarTemplate', { static: true }) public declare toolbarTemplate: TemplateRef<any>;\r\n @Input() public text: string;\r\n constructor() {\r\n super();\r\n }\r\n}","import { Component, ElementRef, EventEmitter, Injector, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationStart, Router, RouterModule, UrlSegment } from '@angular/router';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n// import { Rule } from '@rosoftlab/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AddEvent, KENDO_GRID, RemoveEvent } from '@progress/kendo-angular-grid';\r\nimport { KENDO_LABEL } from '@progress/kendo-angular-label';\r\nimport { KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';\r\n// import { ColumnMode, SelectionType, SortDirection } from '@swimlane/ngx-datatable';\r\nimport { KENDO_BUTTONS } from \"@progress/kendo-angular-buttons\";\r\nimport { KENDO_DIALOG } from '@progress/kendo-angular-dialog';\r\nimport { pencilIcon, plusIcon, SVGIcon, trashIcon } from '@progress/kendo-svg-icons';\r\nimport { LocalFileService } from \"@rosoftlab/core\";\r\nimport { ReactiveDictionary } from '../../reactive-dictionary';\r\nimport { MaterialDialogService } from '../../services/material-dialog.service';\r\nimport { RdictTableTitle } from './rdict-table-title';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: 'rsl-rdict-generic-table',\r\n templateUrl: './rdict-generic-table.component.html',\r\n styleUrls: ['./rdict-generic-table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n // MatPaginatorModule,\r\n // MatTableModule,\r\n TranslateModule,\r\n KENDO_GRID,\r\n KENDO_TOOLBAR,\r\n KENDO_LABEL,\r\n KENDO_BUTTONS,\r\n KENDO_DIALOG,\r\n RdictTableTitle\r\n ],\r\n providers: []\r\n})\r\nexport class GenericRdictTableComponent implements OnInit {\r\n\r\n dataSource: unknown[] //MatTableDataSource<any> = new MatTableDataSource();\r\n public title: string;\r\n model: string;\r\n @Input() showSerach: boolean;\r\n @Input() searchFields: string;\r\n @Input() customInclude: string;\r\n @Input() defaultSort: string;\r\n // @Input() defaultSortDirection: SortDirection;\r\n @Input() deletePropertyName: string;\r\n @Input() defaultFilter: string;\r\n @Input() showHeader: boolean;\r\n // @Input() deleteDisableRule: Rule[];\r\n @Input() hasAdd: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() canEdit: boolean;\r\n @Input() editOnClick: boolean = false;\r\n @Input() editOnDblClick: boolean = false;\r\n fileLayout: string;\r\n data: any[] = [];\r\n pageIndex: number = 1;\r\n pageSize: number = 30\r\n\r\n basePath: string;\r\n dictPath: string;\r\n isLoadingResults = true;\r\n isRateLimitReached = false;\r\n\r\n @ViewChild(ElementRef, { static: false }) filter: ElementRef;\r\n // @ViewChild('table') table: MatTable<any>;\r\n // @ViewChild('table', { read: ElementRef }) public matTableRef: ElementRef;\r\n\r\n\r\n @Output() selectedObject: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() click: EventEmitter<{ propertyName: string, model: any }> = new EventEmitter<{ propertyName: string, model: any }>();\r\n @Output() editModel: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n columns = [];\r\n tableLayout = {};\r\n allColumns = [];\r\n displayedColumns: string[];\r\n // ColumnMode = ColumnMode;\r\n // SelectionType = SelectionType;\r\n\r\n readonly headerHeight = 50;\r\n readonly rowHeight = 50;\r\n isLoading: boolean;\r\n filterValue: string;\r\n oldOffsetY: number;\r\n hasSearch: false\r\n selectedItem: any;\r\n public svgEdit: SVGIcon = pencilIcon;\r\n public svgDelete: SVGIcon = trashIcon;\r\n public svgAdd: SVGIcon = plusIcon;\r\n tableRdict: ReactiveDictionary;\r\n editColumn: string | null;\r\n constructor(\r\n public router: Router,\r\n public route: ActivatedRoute,\r\n public translate: TranslateService,\r\n private injector: Injector,\r\n private localFileService: LocalFileService,\r\n private rdict: ReactiveDictionary,\r\n private dialogService: MaterialDialogService) {\r\n }\r\n async ngOnInit() {\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'model', \"\");\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'showSerach', false);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'searchFields', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'customInclude', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSort', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSortDirection', '');\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'deletePropertyName', 'name');\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultFilter', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'showHeader', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'deleteDisableRule', null);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'hasAdd', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'canDelete', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'canEdit', true);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'editOnClick', false);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'editOnDblClick', false);\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'editColumn', null);\r\n\r\n this.setValueFromSnapshot(this, this.route.snapshot, 'fileLayout', '');\r\n\r\n const currentUrlSegments: UrlSegment[] = this.router.url.split('/').map(segment => new UrlSegment(segment, {}));\r\n this.basePath = currentUrlSegments.map(segment => segment.path).join('/');\r\n const filteredSegments = currentUrlSegments.filter(segment => segment.path !== '');\r\n this.dictPath = filteredSegments.map(segment => segment.path).join('.');\r\n this.model = filteredSegments.length > 0 ? filteredSegments[filteredSegments.length - 1].path : ''; // Default to empty string if no valid segments\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n // Navigation to another page is about to occur\r\n this.data = [];\r\n this.pageIndex = 1\r\n // Perform actions or update component as needed\r\n }\r\n });\r\n this.getListLayout()\r\n this.loadData()\r\n }\r\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\r\n if (component[key] === undefined) {\r\n let dataFromSnapshot = snapshot.data[key];\r\n if (dataFromSnapshot === null || dataFromSnapshot === undefined) {\r\n dataFromSnapshot = snapshot.params[key];\r\n }\r\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\r\n }\r\n }\r\n async loadData() {\r\n this.rdict.getAsObservable(this.dictPath).subscribe({\r\n next: rdictData => {\r\n this.tableRdict = rdictData;\r\n this.tableRdict.onChanges().subscribe({\r\n next: (changes) => {\r\n console.log(\"Changes detected grid:\", changes);\r\n this.onChangeEvent(changes);\r\n }\r\n })\r\n this.tableRdict.onDelete().subscribe({\r\n next: (changes) => {\r\n console.log(\"Delete detected grid:\", changes);\r\n this.ondDeleteEvent(changes);\r\n }\r\n })\r\n this.rdict.getTableAsObservable(this.dictPath, this.tableRdict).subscribe({\r\n next: value => {\r\n this.dataSource = value;\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n },\r\n error: err => console.error('Error:', err.message),\r\n });\r\n\r\n }\r\n onChangeEvent(changes: any) {\r\n if (changes) {\r\n const key = changes?.key as string;\r\n const value = changes?.value;\r\n if (key && value) {\r\n\r\n const index = this.dataSource.findIndex((item: any) => item.__idx === key);\r\n if (index > -1) {\r\n this.dataSource[index] = value;\r\n } else {\r\n //get the object from rdict\r\n this.tableRdict.getAsObservable(key).subscribe({\r\n next: value => {\r\n var dd = value.getPlainObject();\r\n this.dataSource.push(dd);\r\n }\r\n });\r\n\r\n }\r\n }\r\n }\r\n }\r\n ondDeleteEvent(changes: any) {\r\n if (changes) {\r\n const key = changes?.key as string;\r\n if (key) {\r\n const index = this.dataSource.findIndex((item: any) => item.__idx === key);\r\n if (index > -1) {\r\n this.dataSource.splice(index, 1);\r\n }\r\n // this.tableRdict.delete(key)\r\n }\r\n\r\n }\r\n }\r\n getListLayout() {\r\n if (this.model) {\r\n if (this.fileLayout) {\r\n //load from file\r\n this.localFileService.getJsonData(this.fileLayout).subscribe({\r\n next: value => {\r\n if (value) {\r\n const layout = value.find(item => item.model === this.model);\r\n this.setLayout(layout?.tableLayout);\r\n }\r\n },\r\n error: err => console.error('Error:', err.message),\r\n })\r\n } else\r\n //Use rdict layout\r\n this.rdict.getAsObservable(\"config.models.\" + this.model + \".tableLayout\").subscribe(\r\n {\r\n next: value => {\r\n this.setLayout(value);\r\n },\r\n error: err => console.error('Error:', err.message),\r\n }\r\n )\r\n }\r\n }\r\n\r\n private setLayout(layout: any) {\r\n if (layout) {\r\n this.tableLayout = layout;\r\n this.title = this.translate.instant(this.tableLayout[\"title\"]);\r\n this.allColumns = this.tableLayout[\"columns\"].map(item => {\r\n if (!item.isTranslated) {\r\n item.name = this.translate.instant(item.translateKey);\r\n item.isTranslated = true\r\n item.isEditLink = false;\r\n if (this.editColumn && this.editColumn === item.propertyName) {\r\n item.isEditLink = true;\r\n }\r\n }\r\n return item;\r\n });\r\n this.columns = [];\r\n\r\n this.allColumns.sort((a, b) => a.order - b.order);\r\n this.displayedColumns = [];\r\n this.displayedColumns.push.apply(this.displayedColumns, this.allColumns.map(x => x.propertyName));\r\n }\r\n }\r\n public addHandler(): void {\r\n this.router.navigate([`${this.basePath}/add`])\r\n }\r\n public editHandler(args: AddEvent): void {\r\n this.edit(args.dataItem);\r\n // this.editDataItem = args.dataItem;\r\n // this.isNew = false;\r\n }\r\n public edit(dataItem: any): void {\r\n this.router.navigate([`${this.basePath}/edit/${dataItem.__idx}`])\r\n }\r\n public removeHandler(args: RemoveEvent): void {\r\n this.dialogService.confirmDelete().subscribe({\r\n next: (result) => {\r\n if (result) {\r\n this.tableRdict.deleteAsObservable(args.dataItem.__idx).subscribe({\r\n next: (result) => {\r\n this.dataSource.splice(args.rowIndex, 1);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n // this.editService.remove(args.dataItem);\r\n\r\n }\r\n public getCellValue(item: any, propertyName: string): any {\r\n if (item instanceof ReactiveDictionary) {\r\n console.log(item)\r\n } else {\r\n return item[propertyName];\r\n }\r\n }\r\n}\r\n","<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\">\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column.propertyName) }}\r\n </a>\r\n </ng-template>\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column.propertyName) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>","// projects/my-library/src/lib/socket-config.token.ts\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nexport const SOCKET_URL = new InjectionToken<string>('SocketUrl');\r\n","/*\r\n * Public API Surface of rdict\r\n */\r\n\r\nexport * from './lib/core';\r\nexport * from './lib/reactive-dictionary';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i1.SocketService","i1.UserService","i2","i3","i4.ReactiveDictionary","i1","i3.ReactiveDictionary","i4","i5.MaterialDialogService","i6"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,aAAa,CAAA;AAGxB,IAAA,WAAA,CACsB,SAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;;;;;;;;;;AAa5B,IAAA,UAAU,CAAC,SAAiB,EAAA;QAC1B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE;YAC7C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,gBAAA,eAAe,EAAE,IAAI;;AAErB,gBAAA,IAAI,EAAE;oBACJ,KAAK,EAAE,SAAS;AACjB;;;;;AAKF,aAAA,CAAC;;;;;;;;;;;;;;;IAiBN,cAAc,GAAA;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,KAAI;gBACnC,IAAI,IAAI,EAAE;AACR,oBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;qBACrB;oBACL,MAAM,CAAC,kCAAkC,CAAC;;AAE9C,aAAC,CAAC;AACJ,SAAC,CAAC;;AAEJ,IAAA,WAAW,CAAC,KAAU,EAAA;QACpB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAS,KAAI;;YAElC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;;AAEpC,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;;AAE/C,SAAC,CAAC;;AAEJ,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAS,KAAI;;YAErC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;;gBAEpC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;;AAEtC,SAAC,CAAC;;;IAGJ,eAAe,CAAC,GAAW,EAAE,GAAW,EAAA;QACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAa,KAAI;AAC5D,gBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC9B,oBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;qBAClB;AACL,oBAAA,OAAO,CAAC,QAAQ,CAAC,CAAC;;AAEtB,aAAC,CAAC;AACJ,SAAC,CAAC;;;AAIJ,IAAA,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,KAAU,EAAA;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,QAAa,KAAI;AAC7D,gBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC9B,oBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;qBACjB;AACL,oBAAA,OAAO,EAAE;;AAEb,aAAC,CAAC;AACJ,SAAC,CAAC;;;IAIJ,UAAU,CAAC,GAAW,EAAE,GAAW,EAAA;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAa,KAAI;AACzD,gBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC9B,oBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;qBACjB;AACL,oBAAA,OAAO,EAAE;;AAEb,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ,IAAA,yBAAyB,CAAC,GAAQ,EAAA;AAChC,QAAA,IAAI,GAAG,YAAY,IAAI,EAAE;YACvB,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE;;AACjC,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC;;aACzC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClD,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAC1C,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnD,gBAAA,OAAO,GAAG;aACX,EAAE,EAAS,CAAC;;AAEf,QAAA,OAAO,GAAG;;AAGZ,IAAA,yBAAyB,CAAC,GAAQ,EAAA;QAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC3C,YAAA,IAAI,UAAU,IAAI,GAAG,EAAE;AACrB,gBAAA,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAE/B,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAC1C,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnD,gBAAA,OAAO,GAAG;aACX,EAAE,EAAS,CAAC;;AAEf,QAAA,OAAO,GAAG;;AA3ID,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAId,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJT,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAKI,MAAM;2BAAC,UAAU;;;ACNtB;AAIM,MAAO,kBAAmB,SAAQ,GAAgB,CAAA;AACvC,IAAA,SAAA,IAAA,CAAA,QAAQ,GAAoC,IAAI,GAAG,EAA8B,CAAC;AAOjG,IAAA,WAAA,CAAY,aAA4B,EAAA;AACtC,QAAA,KAAK,EAAE;AAND,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,OAAO,EAAO;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,OAAO,EAAO;QAE3C,IAAa,CAAA,aAAA,GAAY,KAAK;QAC9B,IAAU,CAAA,UAAA,GAAW,IAAI;AAI/B,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;;;;IAK9B,MAAM,UAAU,CAAC,SAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC;AACxC,QAAA,MAAM,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;IA+BxB,MAAM,QAAQ,CAAC,GAAW,EAAA;;QAExB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,gBAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AACvC,oBAAA,OAAO,KAAK;;gBAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/C,oBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;oBAEjC,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,EAAE;AAChD,wBAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;;wBAErE,IAAI,YAAY,EAAE;4BAChB,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;4BAChC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;AACvC,4BAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AACnB,4BAAA,OAAO,IAAI;;;;AAIjB,gBAAA,OAAO,KAAK;;iBACP;gBACL,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAEA,EAAM,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC1B,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;gBACnB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAClG,gBAAA,OAAO,IAAI;;;aAER;AACL,YAAA,MAAM,GAAG,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAuB;AAChE,YAAA,IAAI,GAAG;AAAE,gBAAA,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AACtD,gBAAA,OAAO,IAAI;;;AAGpB,IAAA,2BAA2B,CAAC,KAAU,EAAA;;AAEpC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QACjC,IAAI,SAAS,KAAK,MAAM;AAAE,YAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;aAC9C,IAAI,KAAK,YAAY,kBAAkB;AAAE,YAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;;AAC/F,YAAA,OAAO,KAAK;;;IAGnB,MAAM,QAAQ,CAAC,GAAW,EAAE,KAAU,EAAE,cAAuB,IAAI,EAAA;QACjE,IAAI,WAAW,EAAE;AACf,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;;YACjE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;;;AAGrD,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;;AAEpC,IAAA,MAAM,WAAW,CAAC,GAAW,EAAE,cAAuB,IAAI,EAAA;AACxD,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjB,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI;AACF,oBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;;gBAC7D,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;;;AAGrD,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;;AAG/B,IAAA,kBAAkB,CAAC,GAAW,EAAE,WAAA,GAAuB,IAAI,EAAA;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;;;IAGjD,MAAM,SAAS,CAAC,WAAiC,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI;;AAEF,gBAAA,MAAM,IAAI,GAAG,WAAW,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;;;AAGxE,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;AAEtB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;YACzB,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;;;;AAK1D,IAAA,MAAM,YAAY,CAAC,IAAY,EAAE,IAAqB,EAAA;AACpD,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1E,YAAA,OAAO,IAAI;;QACX,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5C,YAAA,MAAM,KAAK;;;IAGR,cAAc,GAAA;QACnB,MAAM,WAAW,GAAwB,EAAE;QAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;AAC1B,YAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;gBACvC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE;;AACpC,iBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBACpC,MAAM,cAAc,GAAG;AACpB,qBAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAClB,qBAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;AAC5B,qBAAA,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC;AAC9B,qBAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAChC,gBAAA,IAAI;AACF,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC;AACpE,oBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW;;AAC9B,gBAAA,MAAM;AACN,oBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;;iBAEtB;AACL,gBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK;;AAE5B,SAAC,CAAC;QACF,OAAO,WAAW,CAAC;;IAEb,eAAe,CAAC,GAAW,EAAE,KAAU,EAAA;;AAE7C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,+CAA+C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC5F,YAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;;AAEzB,QAAA,OAAO,KAAK;;AAEd,IAAA,eAAe,CAAC,GAAW,EAAA;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;;AAGjC,IAAA,oBAAoB,CAAC,GAAW,EAAE,IAAA,GAAY,IAAI,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CACxC,QAAQ,CAAC,CAAC,aAAa,KAAI;AACzB,YAAA,IAAI,EAAE,aAAa,YAAY,GAAG,CAAC,EAAE;AACnC,gBAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;;YAG/D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAEjD,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,YAAY,kBAAkB,CAAC;YAE1E,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC;;YAG7F,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC3C,CAAC,CACH;;AAGH,IAAA,wBAAwB,CAAC,GAAW,EAAE,IAAA,GAAY,IAAI,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CACxC,QAAQ,CAAC,CAAC,UAAU,KAAI;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC9B,gBAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;;AAGlE,YAAA,MAAM,6BAA6B,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,YAAY,kBAAkB,CAAC;YAEpG,IAAI,CAAC,6BAA6B,EAAE;AAClC,gBAAA,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC;;;YAIlG,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;SAC/C,CAAC,CACH;;AAEH,IAAA,MAAM,QAAQ,CAAC,GAAW,EAAE,OAAY,IAAI,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,GAAG,EAAE;AAE3B,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;QAE7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;YAC9C,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAuB;AAC5D,YAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AACvC,gBAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACrB,gBAAA,OAAO,CAAC,CAAC,EAAE,KAAK,CAAiC;;AAEnD,YAAA,OAAO,IAAI;SACZ,CAAC,CACH;;AAGD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAwC,CAAC,KAAK,IAAI,CAAC;AAEzF,QAAA,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC;;AAG9B,IAAA,MAAM,YAAY,CAAC,GAAW,EAAE,OAAY,IAAI,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;AACrB,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;;QAE7B,MAAM,MAAM,GACV,CAAC,MAAM,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,GAAQ,EAAE,KAAa,KAAI;AAC/D,YAAA,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAuB;AACjE,YAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;gBACvC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;;AAE5B,YAAA,OAAO,KAAK;AACd,SAAC,CAAC,CACH,KAAK,EAAE,CAAC;AAEX,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,YAAY,kBAAkB,CAAC;;IAE3E,MAAM,mBAAmB,CAAC,GAAW,EAAA;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;;AAGpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;;IAEpC,MAAM,gBAAgB,CAAC,IAAS,EAAA;AAC9B,QAAA,IAAI,IAAI,YAAY,kBAAkB,EAAE;YACtC,MAAM,MAAM,GACV,CAAC,MAAM,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAI;gBAC7C,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAuB;AAC9D,gBAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AACvC,oBAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;;AAEzB,gBAAA,OAAO,KAAK;AACd,aAAC,CAAC,CACH,KAAK,EAAE;AAEV,YAAA,OAAO;iBACJ,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,YAAY,kBAAkB;AAC1D,iBAAA,GAAG,CAAC,CAAC,UAAU,KAAI;gBAClB,MAAM,cAAc,GAAwB,EAAE;AAC9C,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE;AAC/C,oBAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AACpB,wBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;;;AAG/B,gBAAA,OAAO,cAAc;AACvB,aAAC,CAAC;;AACC,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;AAE9B,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAI;gBAC7B,MAAM,cAAc,GAAwB,EAAE;AAC9C,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE;AAC/C,oBAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AACpB,wBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;;;AAG/B,gBAAA,OAAO,cAAc;AACvB,aAAC,CAAC;;aACG;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,IAAI,CAAC;AAChE,YAAA,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+Bb,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;;IAErC,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;;IAE7B,UAAU,GAAA;QAChB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACvC,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAE9B,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QACvC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE;;AAGhC,IAAA,MAAM,MAAM,CAAC,MAA2B,EAAE,MAAc,IAAI,EAAA;AAC1D,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrC,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC9B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7C,gBAAA,IAAI,YAAY,KAAK,MAAM,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;;;IAI7E,aAAa,CAAC,QAAgB,EAAE,KAAU,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;;8GAlXzB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,UAAA,EAFjB,MAAM;;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;oBACV,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACFM,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,SAAS,CAAA;;AAGtB,UAAA,CAAA;AADR,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;;AACf,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAGhB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAGd,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAGd,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAGhB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACvB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAGxB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AApCN,IAAI,GAAA,UAAA,CAAA;AAJhB,IAAA,eAAe,CAAC;AACb,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,gBAAgB,EAAE;KACrB;AACY,CAAA,EAAA,IAAI,CAqChB;;AC1CD;AAGA;AAMO,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,SAAS,CAAA;;AAGvB,UAAA,CAAA;AADR,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;;AACf,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAGd,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;;AACvB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAGtB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAGtB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAjCL,KAAK,GAAA,UAAA,CAAA;AAJjB,IAAA,eAAe,CAAC;AACb,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,gBAAgB,EAAE;KACrB;AACY,CAAA,EAAA,KAAK,CAmCjB;;AC3CD;AAKO,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,SAAS,CAAA;AAc/B,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ;;;AAZtC,UAAA,CAAA;AADR,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;;AACf,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAZN,IAAI,GAAA,UAAA,CAAA;AAHhB,IAAA,eAAe,CAAC;AACb,QAAA,IAAI,EAAE;KACT;AACY,CAAA,EAAA,IAAI,CAiBhB;;ACbK,MAAO,WAAY,SAAQ,WAAiB,CAAA;AAEhD,IAAA,WAAA,CAAY,SAAwB,EAAA;QAClC,KAAK,CAAC,SAAS,CAAC;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;IAEzB,SAAS,GAAA;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9C,QAAA,OAAO,QAAQ;;AAEjB,IAAA,eAAe,CAAC,IAAY,EAAA;AAE1B,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtE,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;IAEd,QAAQ,GAAA;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7C,QAAA,OAAO,QAAQ;;8GApBN,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCoBY,aAAa,CAAA;AAUxB,IAAA,WAAA,CACU,WAAwB,EACxB,MAAc,EACf,SAA2B,EAC1B,KAAyB,EAAA;QAHzB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAM,CAAA,MAAA,GAAN,MAAM;QACP,IAAS,CAAA,SAAA,GAAT,SAAS;QACR,IAAK,CAAA,KAAA,GAAL,KAAK;QAbR,IAAQ,CAAA,QAAA,GAAG,OAAO;QAClB,IAAO,CAAA,OAAA,GAAY,QAAQ;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,CAAC,CAAC;QAE5B,IAAQ,CAAA,QAAA,GAAY,KAAK;QAClB,IAAK,CAAA,KAAA,GAAsC,EAAE;QAC7C,IAAK,CAAA,KAAA,GAAG,QAAQ;;QAEvB,IAAQ,CAAA,QAAA,GAAW,MAAM;AAclB,QAAA,IAAA,CAAA,cAAc,GAAyB,CAAC,IAAI,KAAa;AAC9D,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACnD,SAAC;QATC,IAAI,CAAC,OAAO,EAAE;;AAGhB,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;;IAMtD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,SAAS,CACnC;YACE,IAAI,EAAE,KAAK,IAAG;AACZ,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;aAC5D;AACD,YAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,GAAG,CAAC;YAClE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,8CAA8C;AAC3E,SAAA,CACF;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AACpD,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B,YAAA,OAAO,IAAI;SACZ,CAAC,CAAC;;;AAIE,IAAA,QAAQ,CAAC,EAAqB,EAAA;QACnC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI;AAC5B,QAAA,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QAE1B,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAChD,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,CACvB;;aACI;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEpC,QAAA,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;;;IAKhC,sBAAsB,CAAC,IAAY,EAAE,QAAiB,EAAA;QAC5D,IAAI,WAAW,GAAsC,EAAE;AAEvD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;AAClB,YAAA,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;;gBAEjD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;aAC/D;AAED,YAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG5B,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;gBACtE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;AAEjD,SAAC,CAAC;AAEF,QAAA,OAAO,WAAW;;8GApFT,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EC7B1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ixCAyByB,EDNrB,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAEf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIH,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGb,OAAA,EAAA;wBACP,YAAY;wBACZ,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,aAAa;wBACb,aAAa;wBACb,YAAY;wBACZ;AACD,qBAAA,EAAA,QAAA,EAAA,ixCAAA,EAAA,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA;;;MElBU,qBAAqB,CAAA;AAOhC,IAAA,WAAA,CACS,SAA2B,EAC1B,aAA4B,EAC5B,mBAAwC,EAAA;QAFzC,IAAS,CAAA,SAAA,GAAT,SAAS;QACR,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;AATtB,QAAA,IAAA,CAAA,KAAK,GAAyB;AACnC,YAAA,OAAO,EAAE,2BAA2B;YACpC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;YACtC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC3C,YAAA,SAAS,EAAE,IAAI;SAChB;;IAMD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CACjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+CAA+C,CAAC,EACvE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CACrC;;AAGH,IAAA,OAAO,CAAC,OAAgB,EAAE,KAAc,EAAE,iBAA0B,EAAE,gBAAyB,EAAA;AAC7F,QAAA,MAAM,MAAM,GAAc,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAChD,KAAK,EAAE,KAAK,IAAI,SAAS;YACzB,OAAO,EAAE,OAAO,IAAI,eAAe;AACnC,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,gBAAgB,IAAI,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,gBAAA,EAAE,IAAI,EAAE,iBAAiB,IAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI;AACxE,aAAA;AACD,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,QAAQ,EAAE,GAAG;AACd,SAAA,CAAC;;AAGF,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;YACjC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACjC,gBAAA,IAAI,MAAM,YAAY,iBAAiB,EAAE;;AAEvC,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;qBACf;oBACL,MAAM,YAAY,GAAG,MAA2C;AAChE,oBAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;AAEpC,gBAAA,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,aAAC,CAAC;AACJ,SAAC,CAAC;;AAEJ,IAAA,eAAe,CAAC,OAAgB,EAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,IAAI,2BAA2B;AAC3D,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QAClD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;8GAnDhC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCLY,kBAAkB,CAAA;AAC3B,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS;;AAC7B,IAAA,WAAW,CAAC,KAAwB,EAAA;AAChC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;YAC7C;;AAGJ,QAAA,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;QAC3B,KAAK,CAAC,WAAW,GAAG;AAChB,YAAA,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;YAC5B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;SACpD;AACD,QAAA,IAAI,KAAK,CAAC,WAAW,EAAE;YACnB,KAAK,CAAC,WAAW,GAAG;AAChB,gBAAA,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC5B,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW;aAC/D;;AAEL,QAAA,IAAI,KAAK,CAAC,WAAW,EAAE;YACnB,KAAK,CAAC,WAAW,GAAG;AAChB,gBAAA,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC5B,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW;aAC/D;;;AAGZ;AAEK,SAAU,0BAA0B,CAAC,SAA2B,EAAA;IAClE,OAAO;AACH,QAAA,kBAAkB,EAAE;AAChB,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;gBAChB,OAAO,CAAC,KAAU,EAAE,KAAwB,EAAA;;AAExC,oBAAA,OAAO,SAAS,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;iBAClF;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,UAAU,EAAE;AACR,YAAA;AACI,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,SAAS,EAAE,IAAI,kBAAkB,CAAC,SAAS,CAAC;AAC/C;AACJ,SAAA;KACJ;AACL;;MClCa,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAPpC,YAAY,CAAA,EAAA,CAAA,CAAA;AAOH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAJ3B,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE;AAC1G,SAAA,EAAA,OAAA,EAAA,CALC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAOH,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;AAEb,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE;AAC1G,qBAAA;AACF,iBAAA;;;MCYY,kBAAkB,CAAA;IAiB7B,WACS,CAAA,MAAc,EACd,KAAqB,EACrB,SAA2B,EAC1B,KAAyB,EACzB,gBAAkC,EAClC,aAAoC,EAAA;QALrC,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAS,CAAA,SAAA,GAAT,SAAS;QACR,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;AAdvB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;QAC5B,IAAK,CAAA,KAAA,GAAQ,EAAE;QACf,IAAO,CAAA,OAAA,GAAsB,EAAE;QAC/B,IAAM,CAAA,MAAA,GAAwB,EAAE;QAIzB,IAAQ,CAAA,QAAA,GAAY,QAAQ;;AAYnC,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;AAEtE,QAAA,MAAM,kBAAkB,GAAa,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAC5E,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACzC;AACD,QAAA,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;YAC/E,kBAAkB,CAAC,GAAG,EAAE;;QAG1B,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;AACxG,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,IAAI;QAC1B,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,QAAQ,EAAE;;AAGjB,IAAA,oBAAoB,CAAI,SAAc,EAAE,QAAgC,EAAE,GAAW,EAAE,YAAe,EAAA;AACpG,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAChC,IAAI,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACzC,IAAI,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAC/D,gBAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;;AAEzC,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,gBAAgB,KAAK,SAAS,GAAG,gBAAgB,GAAG,YAAY;;;AAIrF,IAAA,QAAQ,CAAC,KAAK,EAAA;;;IAGd,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;gBAClD,IAAI,EAAE,KAAK,IAAG;oBACZ,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;wBAC7C,IAAI,EAAE,UAAU,IAAG;AACjB,4BAAA,IAAI,CAAC,UAAU,GAAG,UAAU;4BAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;4BAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,OAAO,IAAG;gCAC9C,IAAI,OAAO,EAAE;AACX,oCAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC;AACzC,oCAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;;;AAG5D,6BAAC,CAAC;;AAEL,qBAAA,CAAC;iBACH;AACD,gBAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACnD,aAAA,CAAC;;;IAGN,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;gBAEnB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;oBAC3D,IAAI,EAAE,KAAK,IAAG;wBACZ,IAAI,KAAK,EAAE;AACT,4BAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC;AACjE,4BAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;;qBAErC;AACD,oBAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACnD,iBAAA,CAAC;;;AAEF,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,SAAS,CAAC;oBACvF,IAAI,EAAE,UAAU,IAAG;wBACjB,IAAI,UAAU,EAAE;AACd,4BAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;qBAE7B;AACD,oBAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACnD,iBAAA,CAAC;;;AAGA,IAAA,SAAS,CAAC,UAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;AAExD,QAAA,IAAI,SAAS,GAAwB,UAAU,CAAC,QAAQ,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;AAkB/C,IAAA,eAAe,CAAC,MAA2B,EAAA;AACzC,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;;AAEhD,IAAA,cAAc,CAAC,KAAwB,EAAA;;QAE7C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9F,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;;;AAI/D,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;;;AAI3D,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;AAC1C,gBAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU;AAC7C,gBAAA,KAAK,CAAC,UAAU,GAAG,CAAC,WAA8B,KAAI;oBACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAC/E,oBAAA,OAAO,gBAAgB;AACzB,iBAAC;;iBACI;gBACL,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC;;;AAI5D,QAAA,OAAO,KAAK;;AAEP,IAAA,MAAM,MAAM,GAAA;QACjB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAErC,MAAM,SAAS,CAAC,EAAa,EAAA;AAC3B,QAAA,IAAI,EAAE,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAA4B,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjE,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;;;aAE/B;AACL,YAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;;;AAGlC,IAAA,qBAAqB,CAAC,EAAa,EAAA;AACjC,QAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;;YAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,OAAO,YAAY,WAAW,EAAE;gBAClC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AACpC,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAEvC,SAAC,CAAC;;AAEG,IAAA,aAAa,CAAC,GAAW,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC;;8GArLlC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B/B,8eAUA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,2BAA2B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGjB,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,iBAAiB;wBACjB,eAAe;wBACf,2BAA2B;wBAC3B;AACD,qBAAA,EAAA,QAAA,EAAA,8eAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA;;;AECG,MAAO,eAAgB,SAAQ,oBAAoB,CAAA;AAIrD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QAJJ,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;;8GADX,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,oFAdb,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,EAQpF,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAqB,eAAA,CAAC,EAAE,CAAC;AAC9F,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBAEL,WAAW;AAEZ,qBAAA;AACH,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,IAAA;AACJ,iBAAA;wDAGkE,eAAe,EAAA,CAAA;sBAA7E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC9B,IAAI,EAAA,CAAA;sBAAnB;;;MCUQ,0BAA0B,CAAA;AAyDrC,IAAA,WAAA,CACS,MAAc,EACd,KAAqB,EACrB,SAA2B,EAC1B,QAAkB,EAClB,gBAAkC,EAClC,KAAyB,EACzB,aAAoC,EAAA;QANrC,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAS,CAAA,SAAA,GAAT,SAAS;QACR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAa,CAAA,aAAA,GAAb,aAAa;QA/Cd,IAAW,CAAA,WAAA,GAAY,KAAK;QAC5B,IAAc,CAAA,cAAA,GAAY,KAAK;QAExC,IAAI,CAAA,IAAA,GAAU,EAAE;QAChB,IAAS,CAAA,SAAA,GAAW,CAAC;QACrB,IAAQ,CAAA,QAAA,GAAW,EAAE;QAIrB,IAAgB,CAAA,gBAAA,GAAG,IAAI;QACvB,IAAkB,CAAA,kBAAA,GAAG,KAAK;;;AAOhB,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAO;AAC3D,QAAA,IAAA,CAAA,KAAK,GAAuD,IAAI,YAAY,EAAwC;AACpH,QAAA,IAAA,CAAA,SAAS,GAAsB,IAAI,YAAY,EAAO;QAEhE,IAAO,CAAA,OAAA,GAAG,EAAE;QACZ,IAAW,CAAA,WAAA,GAAG,EAAE;QAChB,IAAU,CAAA,UAAA,GAAG,EAAE;;;QAKN,IAAY,CAAA,YAAA,GAAG,EAAE;QACjB,IAAS,CAAA,SAAA,GAAG,EAAE;QAMhB,IAAO,CAAA,OAAA,GAAY,UAAU;QAC7B,IAAS,CAAA,SAAA,GAAY,SAAS;QAC9B,IAAM,CAAA,MAAA,GAAY,QAAQ;;AAYjC,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;AACjE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC;AACzE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC;AAC1E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC;AAC3E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC;AACzE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAE,CAAC;AAChF,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,EAAE,MAAM,CAAC;AAClF,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC;AAC3E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AACxE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,CAAC;AAC/E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC;AACpE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC;AACvE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC;AAC1E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC;AAC7E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAExE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;QAEtE,MAAM,kBAAkB,GAAiB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACzE,QAAA,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QAClF,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACvE,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QACnG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;AACnC,YAAA,IAAI,KAAK,YAAY,eAAe,EAAE;;AAEpC,gBAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC;;;AAGtB,SAAC,CAAC;QACF,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,QAAQ,EAAE;;AAEjB,IAAA,oBAAoB,CAAI,SAAc,EAAE,QAAgC,EAAE,GAAW,EAAE,YAAe,EAAA;AACpG,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAChC,IAAI,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACzC,IAAI,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAC/D,gBAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;;AAEzC,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,gBAAgB,KAAK,SAAS,GAAG,gBAAgB,GAAG,YAAY;;;AAGrF,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;YAClD,IAAI,EAAE,SAAS,IAAG;AAChB,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC;AACpC,oBAAA,IAAI,EAAE,CAAC,OAAO,KAAI;AAChB,wBAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC;AAC9C,wBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;AAE9B,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;AACnC,oBAAA,IAAI,EAAE,CAAC,OAAO,KAAI;AAChB,wBAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC;AAC7C,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;;AAE/B,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;oBACxE,IAAI,EAAE,KAAK,IAAG;AACZ,wBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;qBACxB;AACD,oBAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACnD,iBAAA,CAAC;aACH;AACD,YAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACnD,SAAA,CAAC;;AAGJ,IAAA,aAAa,CAAC,OAAY,EAAA;QACxB,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,GAAG,GAAG,OAAO,EAAE,GAAa;AAClC,YAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK;AAC5B,YAAA,IAAI,GAAG,IAAI,KAAK,EAAE;AAEhB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;AAC1E,gBAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK;;qBACzB;;oBAEL,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;wBAC7C,IAAI,EAAE,KAAK,IAAG;AACZ,4BAAA,IAAI,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE;AAC/B,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;;AAE3B,qBAAA,CAAC;;;;;AAMV,IAAA,cAAc,CAAC,OAAY,EAAA;QACzB,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,GAAG,GAAG,OAAO,EAAE,GAAa;YAClC,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;AAC1E,gBAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;oBACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;;;;IAOxC,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;gBAEnB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;oBAC3D,IAAI,EAAE,KAAK,IAAG;wBACZ,IAAI,KAAK,EAAE;AACT,4BAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;AAC5D,4BAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;;qBAEtC;AACD,oBAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACnD,iBAAA,CAAC;;;;AAGF,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC,SAAS,CAClF;oBACE,IAAI,EAAE,KAAK,IAAG;AACZ,wBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;qBACtB;AACD,oBAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACnD,iBAAA,CACF;;;AAIC,IAAA,SAAS,CAAC,MAAW,EAAA;QAC3B,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,IAAG;AACvD,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AACrD,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,oBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE;AAC5D,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;;AAG1B,gBAAA,OAAO,IAAI;AACb,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;YAEjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;;;IAG9F,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAM,IAAA,CAAA,CAAC,CAAC;;AAEzC,IAAA,WAAW,CAAC,IAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;AAInB,IAAA,IAAI,CAAC,QAAa,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAG,EAAA,IAAI,CAAC,QAAQ,SAAS,QAAQ,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;;AAE5D,IAAA,aAAa,CAAC,IAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;AAC3C,YAAA,IAAI,EAAE,CAAC,MAAM,KAAI;gBACf,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAChE,wBAAA,IAAI,EAAE,CAAC,MAAM,KAAI;4BACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;AAE3C,qBAAA,CAAC;;;AAGP,SAAA,CAAC;;;IAIG,YAAY,CAAC,IAAS,EAAE,YAAoB,EAAA;AACjD,QAAA,IAAI,IAAI,YAAY,kBAAkB,EAAE;AACtC,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;aACZ;AACL,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC;;;8GA3PlB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAF1B,EAAE,EA+BF,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAU,gDCnEvB,81EA4CgC,EAAA,MAAA,EAAA,CAAA,iGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpB5B,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;;AAGZ,gBAAA,eAAe,mtGAMf,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBApBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAGpB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC5B,OAAA,EAAA;wBACP,YAAY;wBACZ,YAAY;;;wBAGZ,eAAe;wBACf,UAAU;wBACV,aAAa;wBACb,WAAW;wBACX,aAAa;wBACb,YAAY;wBACZ;AACD,qBAAA,EAAA,SAAA,EACU,EAAE,EAAA,QAAA,EAAA,81EAAA,EAAA,MAAA,EAAA,CAAA,iGAAA,CAAA,EAAA;gQAOJ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBAWyC,MAAM,EAAA,CAAA;sBAA/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAK9B,cAAc,EAAA,CAAA;sBAAvB;gBACS,KAAK,EAAA,CAAA;sBAAd;gBACS,SAAS,EAAA,CAAA;sBAAlB;;;AE1EH;MAGa,UAAU,GAAG,IAAI,cAAc,CAAS,WAAW;;ACHhE;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
+
import { SocketService } from './services/socket.service';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class ReactiveDictionary extends Map<string, any> {
|
|
4
5
|
private static instance;
|
|
@@ -7,9 +8,8 @@ export declare class ReactiveDictionary extends Map<string, any> {
|
|
|
7
8
|
private deletes$;
|
|
8
9
|
private isInitialized;
|
|
9
10
|
private _authToken;
|
|
10
|
-
|
|
11
|
+
constructor(socketService: SocketService);
|
|
11
12
|
initialize(authToken: string): Promise<void>;
|
|
12
|
-
keys(): IterableIterator<string>;
|
|
13
13
|
asyncGet(key: string): Promise<any>;
|
|
14
14
|
transform_for_serialization(value: any): any;
|
|
15
15
|
asyncSet(key: string, value: any, emmit_event?: boolean): Promise<void>;
|
|
@@ -21,11 +21,14 @@ export declare class ReactiveDictionary extends Map<string, any> {
|
|
|
21
21
|
private jsonDateReviver;
|
|
22
22
|
getAsObservable(key: string): Observable<any>;
|
|
23
23
|
getTableAsObservable(key: string, data?: any): Observable<any[]>;
|
|
24
|
-
|
|
24
|
+
getTableAsObservable_old(key: string, data?: any): Observable<any[]>;
|
|
25
|
+
getTable(key: string, data?: any): Promise<Map<string, ReactiveDictionary>>;
|
|
26
|
+
getTable_old(key: string, data?: any): Promise<any[]>;
|
|
25
27
|
getTableWithoutGuid(key: string): Promise<any[]>;
|
|
26
28
|
processTableData(data: any): Promise<any[]>;
|
|
27
29
|
onChanges(): Observable<any>;
|
|
28
30
|
onDelete(): Observable<any>;
|
|
31
|
+
private getNextOid;
|
|
29
32
|
update(record: Record<string, any>, key?: string): Promise<void>;
|
|
30
33
|
modelFormList(property: string, value: any): any;
|
|
31
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReactiveDictionary, never>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rosoftlab/rdict",
|
|
3
|
-
"version": "1.0.1-alpha-
|
|
3
|
+
"version": "1.0.1-alpha-12",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^19.1.3",
|
|
6
6
|
"@angular/core": "^19.1.3",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"socket.io-client": "^4.8.1",
|
|
38
38
|
"socket.io-msgpack-parser": "^3.0.2",
|
|
39
39
|
"socket.io-parser": "^3.3.4",
|
|
40
|
-
"@rosoftlab/core": "1.0.1-alpha-
|
|
40
|
+
"@rosoftlab/core": "1.0.1-alpha-12"
|
|
41
41
|
},
|
|
42
42
|
"sideEffects": false,
|
|
43
43
|
"author": "rosoftlab",
|