@corp-products/app-core 3.2.3 → 3.2.5

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.
@@ -188,62 +188,14 @@ class BaseHttpService {
188
188
  }
189
189
  }
190
190
 
191
- const setLocalStorage = (key, value) => localStorage.setItem(key, value);
192
- const getLocalStorage = (key) => localStorage.getItem(key);
193
- const clearLocalStorage = () => localStorage.clear();
194
- const setSessionStorage = (key, value) => sessionStorage.setItem(key, value);
195
- const getSessionStorage = (key) => sessionStorage.getItem(key);
196
- const clearSessionStorage = () => sessionStorage.clear();
197
- class StorageHandler {
198
- static cookieService;
199
- static init(cookieService) {
200
- this.cookieService = cookieService;
201
- }
202
- static get cookies() {
203
- if (!this.cookieService) {
204
- throw new Error("CookieService is not initialized. Call StorageHandler.init(cookieService) first.");
205
- }
206
- return {
207
- set: (key, value, expires) => this.cookieService.set(key, value, expires),
208
- get: (key) => this.cookieService.get(key),
209
- clear: (key) => this.cookieService.delete(key)
210
- };
211
- }
212
- static local = {
213
- set: (key, value) => this.setItem(key, value, setLocalStorage),
214
- get: (key) => this.getItem(key, getLocalStorage),
215
- clear: () => this.clearStorage(clearLocalStorage)
216
- };
217
- static session = {
218
- set: (key, value) => this.setItem(key, value, setSessionStorage),
219
- get: (key) => this.getItem(key, getSessionStorage),
220
- clear: () => this.clearStorage(clearSessionStorage)
221
- };
222
- static setItem(key, value, set) {
223
- if (!key)
224
- return;
225
- set(key, typeof value === "string" ? value : JSON.stringify(value));
226
- }
227
- static getItem(key, get, withParsing = false) {
228
- const data = get(key) ?? null;
229
- if (data)
230
- return withParsing ? JSON.parse(data) : data;
231
- return null;
232
- }
233
- static clearStorage(clear) {
234
- clear();
235
- }
236
- }
237
-
238
191
  class AuthService extends BaseHttpService {
239
192
  appConfig;
240
- isUserLoggedIn$ = new BehaviorSubject(this.isLoggedIn());
241
- // cookieService = inject(CookieService);
242
- // public storageService = inject(StorageService);
193
+ isUserLoggedIn$ = new BehaviorSubject(false);
194
+ storageService = inject(StorageService);
243
195
  constructor(appConfig) {
244
196
  super();
245
197
  this.appConfig = appConfig;
246
- // StorageHandler.init(this.cookieService);
198
+ this.isUserLoggedIn$.next(this.isLoggedIn());
247
199
  }
248
200
  setApiConfig() {
249
201
  return {
@@ -266,10 +218,10 @@ class AuthService extends BaseHttpService {
266
218
  return !!this.getUserToken();
267
219
  }
268
220
  getUserToken() {
269
- return StorageHandler.cookies.get(CookiesStorageKeys.AUTHORIZATION);
221
+ return this.storageService.cookies.get(CookiesStorageKeys.AUTHORIZATION);
270
222
  }
271
223
  setUserToken(token) {
272
- return StorageHandler.local.set(LocalStorageKeys.TOKEN, token);
224
+ return this.storageService.local.set(LocalStorageKeys.TOKEN, token);
273
225
  }
274
226
  logoutFromSSO() {
275
227
  const logoutUrl = this.appConfig.logoutEndpoint;
@@ -278,9 +230,9 @@ class AuthService extends BaseHttpService {
278
230
  });
279
231
  }
280
232
  clearAuth() {
281
- StorageHandler.local.clear();
282
- StorageHandler.session.clear();
283
- StorageHandler.cookies.clear(CookiesStorageKeys.AUTHORIZATION);
233
+ this.storageService.local.clear();
234
+ this.storageService.session.clear();
235
+ this.storageService.cookies.clear(CookiesStorageKeys.AUTHORIZATION);
284
236
  this.isUserLoggedIn$.next(false);
285
237
  window.location.href = this.appConfig.loginUrl;
286
238
  }
@@ -659,35 +611,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
659
611
 
660
612
  class StorageService {
661
613
  cookieService = inject(CookieService);
662
- // ---------------------------
663
- // Cookies
664
- // ---------------------------
665
614
  get cookies() {
666
615
  return {
667
616
  set: (key, value, expires) => this.cookieService.set(key, value, expires),
668
617
  get: (key) => this.cookieService.get(key),
669
- clear: (key) => this.cookieService.delete(key)
618
+ clear: (key) => this.cookieService.delete(key),
670
619
  };
671
620
  }
672
- // ---------------------------
673
- // Local Storage
674
- // ---------------------------
675
621
  local = {
676
622
  set: (key, value) => this.setItem(key, value, localStorage.setItem.bind(localStorage)),
677
623
  get: (key) => this.getItem(key, localStorage.getItem.bind(localStorage)),
678
624
  clear: () => localStorage.clear(),
679
625
  };
680
- // ---------------------------
681
- // Session Storage
682
- // ---------------------------
683
626
  session = {
684
627
  set: (key, value) => this.setItem(key, value, sessionStorage.setItem.bind(sessionStorage)),
685
628
  get: (key) => this.getItem(key, sessionStorage.getItem.bind(sessionStorage)),
686
629
  clear: () => sessionStorage.clear(),
687
630
  };
688
- // ---------------------------
689
- // Helpers
690
- // ---------------------------
691
631
  setItem(key, value, setFn) {
692
632
  if (!key)
693
633
  return;
@@ -705,9 +645,7 @@ class StorageService {
705
645
  }
706
646
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: StorageService, decorators: [{
707
647
  type: Injectable,
708
- args: [{
709
- providedIn: 'root',
710
- }]
648
+ args: [{ providedIn: 'root' }]
711
649
  }] });
712
650
 
713
651
  class GlobalLoaderComponent {
@@ -728,10 +666,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
728
666
 
729
667
  const authGuard = () => {
730
668
  const appConfig = inject(CORE_CONFIG);
731
- const cookieService = inject(CookieService);
732
- StorageHandler.init(cookieService);
733
- const token = StorageHandler.cookies.get(CookiesStorageKeys.AUTHORIZATION);
734
- if (!token) {
669
+ const authService = inject(AuthService);
670
+ if (!authService.isLoggedIn()) {
735
671
  window.location.href = appConfig.loginUrl;
736
672
  return false;
737
673
  }
@@ -975,6 +911,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
975
911
  args: ["responsiveElement"]
976
912
  }] } });
977
913
 
914
+ const setLocalStorage = (key, value) => localStorage.setItem(key, value);
915
+ const getLocalStorage = (key) => localStorage.getItem(key);
916
+ const clearLocalStorage = () => localStorage.clear();
917
+ const setSessionStorage = (key, value) => sessionStorage.setItem(key, value);
918
+ const getSessionStorage = (key) => sessionStorage.getItem(key);
919
+ const clearSessionStorage = () => sessionStorage.clear();
920
+ class StorageHandler {
921
+ static cookieService;
922
+ static init(cookieService) {
923
+ this.cookieService = cookieService;
924
+ }
925
+ static get cookies() {
926
+ if (!this.cookieService) {
927
+ throw new Error("CookieService is not initialized. Call StorageHandler.init(cookieService) first.");
928
+ }
929
+ return {
930
+ set: (key, value, expires) => this.cookieService.set(key, value, expires),
931
+ get: (key) => this.cookieService.get(key),
932
+ clear: (key) => this.cookieService.delete(key)
933
+ };
934
+ }
935
+ static local = {
936
+ set: (key, value) => this.setItem(key, value, setLocalStorage),
937
+ get: (key) => this.getItem(key, getLocalStorage),
938
+ clear: () => this.clearStorage(clearLocalStorage)
939
+ };
940
+ static session = {
941
+ set: (key, value) => this.setItem(key, value, setSessionStorage),
942
+ get: (key) => this.getItem(key, getSessionStorage),
943
+ clear: () => this.clearStorage(clearSessionStorage)
944
+ };
945
+ static setItem(key, value, set) {
946
+ if (!key)
947
+ return;
948
+ set(key, typeof value === "string" ? value : JSON.stringify(value));
949
+ }
950
+ static getItem(key, get, withParsing = false) {
951
+ const data = get(key) ?? null;
952
+ if (data)
953
+ return withParsing ? JSON.parse(data) : data;
954
+ return null;
955
+ }
956
+ static clearStorage(clear) {
957
+ clear();
958
+ }
959
+ }
960
+
978
961
  /**
979
962
  * Generated bundle index. Do not edit.
980
963
  */
@@ -1 +1 @@
1
- {"version":3,"file":"corp-products-app-core.mjs","sources":["../../../projects/core/src/lib/services/base-pagination-service/pagination.ts","../../../projects/core/src/lib/services/base-pagination-service/base-pagination.service.ts","../../../projects/core/src/lib/handlers/stortage.ts","../../../projects/core/src/lib/core-config.ts","../../../projects/core/src/lib/services/base-http-service/base-http-types.ts","../../../projects/core/src/lib/services/base-http-service/base-http-utils.ts","../../../projects/core/src/lib/services/base-http-service/base-http.service.ts","../../../projects/core/src/lib/handlers/storage-handler.ts","../../../projects/core/src/lib/services/auth.service.ts","../../../projects/core/src/lib/services/jwt-decoder.service.ts","../../../projects/core/src/lib/interceptors/app-http-config.ts","../../../projects/core/src/lib/handlers/http-context-handler.ts","../../../projects/core/src/lib/services/loader.service.ts","../../../projects/core/src/lib/request-modifier.ts","../../../projects/core/src/lib/error-config.ts","../../../projects/core/src/lib/enums/error-code.enum.ts","../../../projects/core/src/lib/interceptors/base-http.interceptor.ts","../../../projects/core/src/lib/interceptors/global-http-error.interceptor.ts","../../../projects/core/src/lib/services/lov.service.ts","../../../projects/core/src/lib/services/error-handler.service.ts","../../../projects/core/src/lib/services/permissions.service.ts","../../../projects/core/src/lib/services/detect-device.service.ts","../../../projects/core/src/lib/services/storage.service.ts","../../../projects/core/src/lib/components/global-loader/global-loader.component.ts","../../../projects/core/src/lib/components/global-loader/global-loader.component.html","../../../projects/core/src/lib/guards/auth.guard.ts","../../../projects/core/src/lib/guards/permissions.guard.ts","../../../projects/core/src/lib/enums/user-permissions.enum.ts","../../../projects/core/src/lib/enums/date-formatter.enum.ts","../../../projects/core/src/lib/enums/display-types.enum.ts","../../../projects/core/src/lib/enums/localization.enum.ts","../../../projects/core/src/lib/directives/permissions.directive.ts","../../../projects/core/src/lib/directives/responsive-element.directive.ts","../../../projects/core/src/corp-products-app-core.ts"],"sourcesContent":["export const PAGESIZE = 10;\r\nexport const PAGE_SIZE_OPTION = [5, 10, 15, 20];\r\nexport enum SortDirection {\r\n ASC = 'ASC',\r\n DESC = 'DESC'\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { ListOptions } from './list-options.interface';\r\nimport { PAGE_SIZE_OPTION, PAGESIZE, SortDirection } from './pagination';\r\nexport abstract class BasePaginationService<T = any> {\r\n totalRecords = 0;\r\n totalPages = 0;\r\n rowsChange: number = PAGESIZE;\r\n\r\n pageSizes = PAGE_SIZE_OPTION;\r\n defaultSortValue = 'createdAt';\r\n defaultSortDirection = SortDirection.DESC;\r\n first: number | undefined = 0;\r\n\r\n listOptions: ListOptions = {\r\n searchValue: '',\r\n paginator: this.rowsChange,\r\n page: 0,\r\n direction: this.defaultSortDirection,\r\n sortBy: this.defaultSortValue,\r\n };\r\n\r\n abstract getList(listOptions: ListOptions): void | Observable<T>;\r\n\r\n createListFilter(filters: { [key: string]: unknown }): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n ...filters,\r\n };\r\n }\r\n\r\n resetList(): void {\r\n this.listOptions = {\r\n searchValue: '',\r\n paginator: this.rowsChange,\r\n page: 0,\r\n };\r\n }\r\n\r\n resetPaginator(): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n paginator: this.rowsChange,\r\n page: 0,\r\n };\r\n }\r\n\r\n onPageChange(event: any): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n page: event.page,\r\n paginator: event.rows,\r\n };\r\n this.first = event.first ?? 0;\r\n this.getList(this.listOptions);\r\n }\r\n}\r\n","export enum LocalStorageKeys {\r\n LANGUAGE = \"LANGUAGE\",\r\n TOKEN = \"TOKEN\"\r\n}\r\n\r\nexport enum SessionStorageKeys {}\r\nexport type StorageEnum = SessionStorageKeys | LocalStorageKeys | CookiesStorageKeys;\r\n\r\nexport enum CookiesStorageKeys {\r\n LANGUAGE = \"LANGUAGE\",\r\n TOKEN = \"TOKEN\",\r\n AUTHORIZATION = \"Authorization\"\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { ToasterOptions } from \"./interfaces\";\r\n\r\nexport interface CoreConfig {\r\n apiPrefix: string;\r\n production: boolean;\r\n gatewayUrl: string;\r\n loginUrl: string;\r\n logoutEndpoint: string;\r\n}\r\n\r\nexport const CORE_CONFIG = new InjectionToken<CoreConfig>(\"CoreConfig\");\r\n\r\n\r\nexport interface ToasterInterface {\r\n success(options:ToasterOptions): void;\r\n error(options:ToasterOptions): void;\r\n warning(options:ToasterOptions): void;\r\n info(options:ToasterOptions): void;\r\n}\r\nexport const TOASTER_SERVICE = new InjectionToken<ToasterInterface>(\"ToasterService\");\r\n","import { HttpContext, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Params as RouterParams } from '@angular/router';\r\n\r\nexport interface HttpConfig {\r\n apiUrl?: string;\r\n microServiceUrl:string;\r\n globalMapFn?: (res: any) => any;\r\n methods?: ServiceConfig;\r\n}\r\n\r\nexport type Params =\r\n | HttpParams\r\n | { [param: string]: string | string[] | unknown };\r\nexport type HttpRequestOptions = {\r\n headers?:\r\n | HttpHeaders\r\n | RouterParams\r\n | { [header: string]: string | string[] };\r\n params?: HttpParams | { [param: string]: string | string[] } | Params;\r\n context?: HttpContext;\r\n reportProgress?: boolean;\r\n observe?: 'events';\r\n responseType?: string;\r\n};\r\nexport const HttpRequestOptionsKeys: Array<keyof Required<HttpRequestOptions>> =\r\n ['headers', 'params', 'context', 'reportProgress', 'observe', 'responseType'];\r\n\r\nexport type HttpOptions<T = any> = HttpRequestOptions & {\r\n urlRewrite?: string;\r\n urlPostfix?: string;\r\n mapFn?: (res: any) => T;\r\n};\r\n\r\nexport interface ServiceConfig {\r\n single?: HttpOptions;\r\n getAll?: HttpOptions;\r\n add?: HttpOptions;\r\n update?: HttpOptions;\r\n delete?: HttpOptions;\r\n}\r\n\r\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n","import { map } from \"rxjs/operators\";\r\nimport { HttpOptions, HttpRequestOptionsKeys } from \"./base-http-types\";\r\nimport { BaseHttpResponse } from \"./base-http-response\";\r\n\r\nexport const resolveUrl = (baseUrl: string, options?: HttpOptions, ...args: string[]): string => {\r\n const { urlRewrite, urlPostfix } = options || {};\r\n\r\n if (urlRewrite) {\r\n return urlRewrite;\r\n }\r\n\r\n let result = baseUrl;\r\n\r\n if (args && args.length > 0 && args[0] !== \"\") {\r\n result += `/${args.join(\"/\")}`;\r\n }\r\n\r\n if (urlPostfix) {\r\n result += `/${urlPostfix}`;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const extractRequestOptions = (options?: any) => {\r\n if (!options || typeof options !== \"object\") {\r\n return {};\r\n }\r\n /* eslint-disable */\r\n return HttpRequestOptionsKeys.reduce((requestOptions: any, key) => {\r\n const value = options[key];\r\n\r\n if (value !== undefined) {\r\n requestOptions[key] = value;\r\n }\r\n\r\n return requestOptions;\r\n }, {});\r\n};\r\n\r\nexport const mapResponse = <T>(options?: HttpOptions) => map((res: T) => (options?.mapFn ? options.mapFn(res) : res));\r\n\r\nexport const epmDefaultMapper = <T>(res: BaseHttpResponse<T>) => res.payload;\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpConfig, HttpOptions, ServiceConfig } from './base-http-types';\r\nimport { epmDefaultMapper, extractRequestOptions, mapResponse, resolveUrl } from './base-http-utils';\r\n\r\nexport abstract class BaseHttpService {\r\n private readonly http: HttpClient = inject(HttpClient);\r\n\r\n get url(): string {\r\n const { apiUrl,microServiceUrl } = this.setApiConfig();\r\n return `${microServiceUrl}${apiUrl ? `/${apiUrl}` : ''}`;\r\n }\r\n\r\n get methodsConfig(): ServiceConfig | undefined {\r\n const { methods } = this.setApiConfig();\r\n return methods;\r\n }\r\n\r\n get globalMapFn(): (res: any) => any {\r\n const { globalMapFn } = this.setApiConfig();\r\n return globalMapFn || epmDefaultMapper;\r\n }\r\n\r\n abstract setApiConfig(): HttpConfig;\r\n\r\n single<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('single');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n getAll<T>(options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('getAll');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n add<T>(body: unknown, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('add');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .post<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n update<T>(\r\n id: string | number | undefined,\r\n body: unknown,\r\n options?: HttpOptions\r\n ): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('update');\r\n const url = id? resolveUrl(this.url, activeOptions, id?.toString()) : resolveUrl(this.url, activeOptions);\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .put<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n delete<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('delete');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .delete<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n protected getMethodConfig(method: keyof ServiceConfig): any {\r\n return this.methodsConfig ? this.methodsConfig[method] : undefined;\r\n }\r\n\r\n protected getMapFun(options?: HttpOptions) {\r\n const getMapFunObj = {\r\n default: { mapFn: epmDefaultMapper },\r\n custom: { mapFn: this.globalMapFn },\r\n };\r\n\r\n if (\r\n options &&\r\n (options?.reportProgress || options?.responseType === 'blob')\r\n ) {\r\n return { mapFn: (res: unknown) => res };\r\n }\r\n\r\n if (options && options?.mapFn) {\r\n return { mapFn: options.mapFn };\r\n }\r\n\r\n const isGlobalMapFnValid =\r\n this.globalMapFn && typeof this.globalMapFn === 'function';\r\n return isGlobalMapFnValid ? getMapFunObj.custom : getMapFunObj.default;\r\n }\r\n}\r\n","// Important for global context\r\nimport { CookiesStorageKeys, LocalStorageKeys, SessionStorageKeys, StorageEnum } from \"./stortage\";\r\nimport { CookieService } from \"ngx-cookie-service\";\r\n\r\nconst setLocalStorage = (key: string, value: string) => localStorage.setItem(key, value);\r\nconst getLocalStorage = (key: string) => localStorage.getItem(key);\r\nconst clearLocalStorage = () => localStorage.clear();\r\nconst setSessionStorage = (key: string, value: string) => sessionStorage.setItem(key, value);\r\nconst getSessionStorage = (key: string) => sessionStorage.getItem(key);\r\nconst clearSessionStorage = () => sessionStorage.clear();\r\n\r\nexport class StorageHandler {\r\n private static cookieService: CookieService;\r\n\r\n public static init(cookieService: CookieService): void {\r\n this.cookieService = cookieService;\r\n }\r\n\r\n public static get cookies() {\r\n if (!this.cookieService) {\r\n throw new Error(\r\n \"CookieService is not initialized. Call StorageHandler.init(cookieService) first.\"\r\n );\r\n }\r\n\r\n return {\r\n set: (key: CookiesStorageKeys, value: string, expires?: number) =>\r\n this.cookieService.set(key, value, expires),\r\n get: (key: CookiesStorageKeys) => this.cookieService.get(key),\r\n clear: (key: CookiesStorageKeys) => this.cookieService.delete(key)\r\n };\r\n }\r\n\r\n public static local = {\r\n set: (key: LocalStorageKeys, value: unknown) => this.setItem(key, value, setLocalStorage),\r\n get: <T>(key: LocalStorageKeys) => this.getItem<T>(key, getLocalStorage),\r\n clear: () => this.clearStorage(clearLocalStorage)\r\n };\r\n public static session = {\r\n set: (key: SessionStorageKeys, value: unknown) => this.setItem(key, value, setSessionStorage),\r\n get: <T>(key: SessionStorageKeys) => this.getItem<T>(key, getSessionStorage),\r\n clear: () => this.clearStorage(clearSessionStorage)\r\n };\r\n\r\n private static setItem(key: StorageEnum, value: unknown, set: (key: string, value: string) => void): void {\r\n if (!key) return;\r\n set(key as string, typeof value === \"string\" ? value : JSON.stringify(value));\r\n }\r\n\r\n private static getItem<T>(key: StorageEnum, get: (key: string) => string | null, withParsing = false): T | null {\r\n const data: string | null = get(key as string) ?? null;\r\n if (data) return withParsing ? JSON.parse(data) as T : data as T;\r\n return null;\r\n }\r\n\r\n private static clearStorage(clear: () => void): void {\r\n clear();\r\n }\r\n}","import { inject, Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CookiesStorageKeys, LocalStorageKeys } from '../handlers/stortage';\r\nimport { CORE_CONFIG, CoreConfig } from '../core-config';\r\nimport { BaseHttpService, HttpConfig } from './base-http-service';\r\nimport { StorageService } from '../services';\r\nimport { StorageHandler } from '../handlers/storage-handler';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService extends BaseHttpService {\r\n public isUserLoggedIn$ = new BehaviorSubject(this.isLoggedIn());\r\n // cookieService = inject(CookieService);\r\n // public storageService = inject(StorageService);\r\n\r\n constructor(@Inject(CORE_CONFIG) protected appConfig: CoreConfig) {\r\n super();\r\n // StorageHandler.init(this.cookieService);\r\n }\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n apiUrl: '',\r\n microServiceUrl: '',\r\n };\r\n }\r\n\r\n initAuthentication() {\r\n const token: string | null = new URLSearchParams(window.location.search).get('token');\r\n if (token) {\r\n this.setAuthentication(token);\r\n window.location.search = '';\r\n }\r\n }\r\n\r\n setAuthentication(token: string) {\r\n this.isUserLoggedIn$.next(true);\r\n this.setUserToken(token);\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return !!this.getUserToken();\r\n }\r\n\r\n getUserToken(): string | null {\r\n return StorageHandler.cookies.get(CookiesStorageKeys.AUTHORIZATION);\r\n }\r\n\r\n setUserToken(token?: string) {\r\n return StorageHandler.local.set(LocalStorageKeys.TOKEN, token);\r\n }\r\n\r\n logoutFromSSO() {\r\n const logoutUrl = this.appConfig.logoutEndpoint;\r\n return this.single<unknown>('', {\r\n urlRewrite: logoutUrl,\r\n });\r\n }\r\n\r\n clearAuth() {\r\n StorageHandler.local.clear();\r\n StorageHandler.session.clear();\r\n StorageHandler.cookies.clear(CookiesStorageKeys.AUTHORIZATION);\r\n this.isUserLoggedIn$.next(false);\r\n window.location.href = this.appConfig.loginUrl;\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { jwtDecode } from \"jwt-decode\";\r\nimport { AuthService } from \"./auth.service\";\r\nimport { JWTDecoded } from \"../interfaces/jwt-token-decoded.interface\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class JwtDecoderService {\r\n authService = inject(AuthService);\r\n public decodedToken: JWTDecoded;\r\n\r\n constructor() {\r\n this.decodeToken();\r\n }\r\n\r\n public decodeToken() {\r\n const token: string = this.authService.getUserToken() as string;\r\n if (token) {\r\n this.decodedToken = jwtDecode(token);\r\n }\r\n }\r\n}\r\n","export const COMMON_BASE_URL = \"common/api/v1\";\r\nexport const APP_HTTP_CONFIG = {\r\n BOARD_BASE_URL: \"board-acl/private/v1\",\r\n MEETING_BASE_URL: \"meeting-acl/private/v1\",\r\n IGATE_BASE_URL: COMMON_BASE_URL + \"/igate-users\",\r\n LOV_BASE_URL: COMMON_BASE_URL + \"/lov\",\r\n ATTACHMENT_BASE_URL: COMMON_BASE_URL + \"/attachment\"\r\n};\r\n","import { HttpContext, HttpContextToken } from \"@angular/common/http\";\r\n\r\nexport const IS_SYSTEM_LOADER = new HttpContextToken<boolean>(() => true); // set default loader\r\nexport const USE_API_PREFIX = new HttpContextToken<boolean>(() => true); // set default loader\r\n\r\nexport class HttpContextHandler {\r\n static setLoaderType(isSystemLoader: boolean) {\r\n return new HttpContext().set(IS_SYSTEM_LOADER, isSystemLoader);\r\n }\r\n\r\n static useApiPrefix(hasBaseSegment: boolean) {\r\n return new HttpContext().set(USE_API_PREFIX, hasBaseSegment);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport interface LoaderState {\r\n show: boolean;\r\n isSystemLoader?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LoaderService {\r\n isLoading$ = new BehaviorSubject<LoaderState>({ show: false });\r\n private loadingMap: Map<string, boolean> = new Map<string, boolean>();\r\n\r\n setLoading(loading: boolean, isSystemLoader = true, url: string): void {\r\n if (!url) {\r\n throw new Error(\"The request URL must be provided to the LoaderService.setLoading function\");\r\n }\r\n\r\n if (loading) {\r\n this.loadingMap.set(url, loading);\r\n this.isLoading$.next({ show: true, isSystemLoader });\r\n } else if (!loading && this.loadingMap.has(url)) {\r\n this.loadingMap.delete(url);\r\n }\r\n\r\n if (!this.loadingMap.size) {\r\n this.isLoading$.next({ show: false });\r\n }\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { HttpRequest } from '@angular/common/http';\r\n\r\nexport type RequestModifier = (req: HttpRequest<any>) => HttpRequest<any>;\r\n\r\nexport const REQUEST_MODIFIER = new InjectionToken<RequestModifier>('REQUEST_MODIFIER');\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const APP_ERROR_HANDLER = new InjectionToken<(error: any) => void>(\r\n 'APP_ERROR_HANDLER',\r\n {\r\n factory: () => (error: any) => {\r\n console.warn('No APP_ERROR_HANDLER provided', error);\r\n },\r\n }\r\n);\r\n","export enum ErrorCode {\r\n JWT_EXPIRED = \"JWT_EXPIRED\",\r\n UNAUTHORIZED = \"UNAUTHORIZED\"\r\n}\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport {\r\n catchError,\r\n finalize,\r\n Observable,\r\n switchMap,\r\n throwError,\r\n from,\r\n mergeMap\r\n} from 'rxjs';\r\nimport { IS_SYSTEM_LOADER } from '../handlers/http-context-handler';\r\nimport { LoaderService } from '../services/loader.service';\r\nimport { CORE_CONFIG, CoreConfig } from '../core-config';\r\nimport { REQUEST_MODIFIER } from '../request-modifier';\r\nimport { APP_ERROR_HANDLER } from '../error-config';\r\nimport { ErrorCode } from '../enums/error-code.enum';\r\n\r\n@Injectable()\r\nexport class HttpBaseInterceptor implements HttpInterceptor {\r\n isRefreshTokenCalled = false;\r\n pendingRequests: { req: HttpRequest<any>; next: HttpHandler }[] = [];\r\n loaderService = inject(LoaderService);\r\n\r\n constructor(\r\n @Inject(CORE_CONFIG) protected appConfig: CoreConfig,\r\n @Inject(REQUEST_MODIFIER)\r\n protected requestModifier: (req: HttpRequest<any>) => HttpRequest<any>,\r\n @Inject(APP_ERROR_HANDLER)\r\n private appErrorHandler: (error: any) => Observable<any>\r\n ) { }\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n request = this.requestModifier(request);\r\n\r\n const IS_SYSTEM_LOADER_CHECK = request.context.get(IS_SYSTEM_LOADER);\r\n this.loaderService.setLoading(true, IS_SYSTEM_LOADER_CHECK, request.url);\r\n\r\n return next.handle(request).pipe(\r\n catchError((err: HttpErrorResponse) => {\r\n if (err?.error?.errors?.errorCode === ErrorCode.JWT_EXPIRED) {\r\n this.pendingRequests.push({ req: request, next });\r\n }\r\n if (!this.isRefreshTokenCalled) {\r\n this.isRefreshTokenCalled = true;\r\n if (!this.appErrorHandler) return throwError(() => err);\r\n return this.appErrorHandler(err).pipe(\r\n switchMap((shouldRetry: boolean) => {\r\n if (shouldRetry) {\r\n this.isRefreshTokenCalled = false;\r\n const queued = [...this.pendingRequests];\r\n this.pendingRequests = [];\r\n if (queued.length > 0) {\r\n return from(queued).pipe(\r\n mergeMap((p) => p.next.handle(p.req))\r\n );\r\n }\r\n }\r\n return throwError(() => err);\r\n })\r\n );\r\n }\r\n return throwError(() => err);\r\n }),\r\n finalize(() =>\r\n this.loaderService.setLoading(false, IS_SYSTEM_LOADER_CHECK, request.url)\r\n )\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, retry, timer } from 'rxjs';\r\n\r\nexport class GlobalHttpErrorInterceptor implements HttpInterceptor {\r\n // check if it is a server error to retry the request\r\n shouldRetry(error: HttpErrorResponse) {\r\n if (error.status >= 500) {\r\n return timer(1000);\r\n }\r\n throw error;\r\n }\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n retry({\r\n count: 1,\r\n delay: this.shouldRetry\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { APP_HTTP_CONFIG } from '../interceptors';\r\nimport { BaseHttpService, HttpConfig } from './base-http-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ListOfValues extends BaseHttpService {\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n microServiceUrl: APP_HTTP_CONFIG.LOV_BASE_URL,\r\n apiUrl: \"lookups\"\r\n };\r\n }\r\n\r\n getRolesByGroup<T>(group: string): Observable<T> {\r\n return this.getAll<T>({\r\n urlPostfix: group\r\n });\r\n }\r\n}\r\n","import { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { ErrorHandler, Injectable, Injector } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { TOASTER_SERVICE, ToasterInterface } from \"../core-config\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ErrorHandlerService implements ErrorHandler {\r\n constructor(\r\n private injector: Injector,\r\n private translateService: TranslateService\r\n ) {}\r\n\r\n private get toasterService(): ToasterInterface {\r\n return this.injector.get<ToasterInterface>(TOASTER_SERVICE);\r\n }\r\n\r\n handleError(error: unknown): void {\r\n console.log(\"ErrorHandlerServicee\", error);\r\n if (error instanceof Error && !(error instanceof HttpErrorResponse)) {\r\n console.error(error);\r\n return;\r\n }\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n console.error(\"HTTP Error:\", error);\r\n\r\n switch (error?.status) {\r\n case 400:\r\n this.showError(`codes.${error.error.errors.errorType}`);\r\n break\r\n case 401:\r\n //TODO : Check After Implement login\r\n this.showError(`network_errors.${error.error.errors.errorType}`);\r\n break;\r\n case 404:\r\n this.showError(`network_errors.${error.error.errors.errorType}`);\r\n break;\r\n case 403:\r\n this.showError(\"forbidden.message\");\r\n break;\r\n case 500:\r\n this.showError(\"validation_error.server\");\r\n break;\r\n default:\r\n this.showError(\"validation_error.random\");\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private showError(messageKey: string): void {\r\n this.toasterService.error({\r\n title: this.translateService.instant(\"error.title\"),\r\n message: this.translateService.instant(`error.${messageKey}`),\r\n });\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { JwtDecoderService } from \"./jwt-decoder.service\";\r\nimport { PermissionsActions, UserPermissionsEnum } from \"../enums\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PermissionsService {\r\n private jwtDecoderService = inject(JwtDecoderService);\r\n private decodedToken = this.jwtDecoderService.decodedToken;\r\n private tokenPermissions = this.decodedToken ? this.decodedToken.permissions as [] : [];\r\n private domainPermissionsSubject = new BehaviorSubject<string[]>([]);\r\n domainPermissions$ = this.domainPermissionsSubject.asObservable();\r\n\r\n private getKeyName(action: string) {\r\n const actionsArr = action.split(\"_\");\r\n return actionsArr.splice(1, actionsArr.length - 1).join(\"_\");\r\n }\r\n\r\n getActionName(action: string) {\r\n return action.split(\"_\")[0];\r\n }\r\n\r\n getAllowedActionsByKey(key: UserPermissionsEnum, newPermissions?: string[]) {\r\n const permissionsNeeded = newPermissions || this.tokenPermissions;\r\n if (!permissionsNeeded) {\r\n console.error(\"There are no permissions available\");\r\n return [];\r\n }\r\n return permissionsNeeded\r\n .filter((p) => {\r\n return key === this.getKeyName(p);\r\n })\r\n .map((t) => {\r\n return this.getActionName(t);\r\n });\r\n }\r\n\r\n checkKeyHasPermission(key: UserPermissionsEnum, action: PermissionsActions, newPermissions?: string[]) {\r\n return this.getAllowedActionsByKey(key, newPermissions).some((p) => p === action);\r\n }\r\n\r\n checkDomainHasPermission(key: UserPermissionsEnum, action: PermissionsActions) {\r\n return this.getAllowedActionsByKey(key, this.getDomainPermissions()).some((p) => p === action);\r\n }\r\n\r\n routeGuardChecker(key: UserPermissionsEnum, action: PermissionsActions) {\r\n if(!this.checkKeyHasPermission(key, action)){\r\n return this.checkKeyHasPermission(key, action,this.getDomainPermissions());\r\n }\r\n return true;\r\n }\r\n\r\n clearDomainPermissions() {\r\n this.domainPermissionsSubject.next([]);\r\n }\r\n\r\n setDomainPermissions(permissions: string[]) {\r\n this.domainPermissionsSubject.next(permissions);\r\n }\r\n\r\n getDomainPermissions(): string[] {\r\n return this.domainPermissionsSubject.getValue();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n//import { DeviceDetectorService } from \"ngx-device-detector\";\r\nimport { debounceTime, distinctUntilChanged, fromEvent, Observable, startWith, Subject, tap } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class DetectDeviceService {\r\n currentWidth: number = window.innerWidth;\r\n private _width$: Subject<number> = new Subject();\r\n private _agent: string;\r\n constructor() {\r\n fromEvent(window, \"resize\")\r\n .pipe(distinctUntilChanged(), debounceTime(200))\r\n .subscribe((event) => this._handelResize(event));\r\n }\r\n\r\n private _handelResize(event: any) {\r\n this._width$.next(event.target.innerWidth);\r\n this.currentWidth = event.target.innerWidth;\r\n }\r\n\r\n get onResize$(): Observable<number> {\r\n return this._width$.asObservable().pipe(\r\n debounceTime(100), // Debounce to avoid too many events\r\n startWith(window.innerWidth), // Trigger initial check\r\n distinctUntilChanged(), // Avoid duplication\r\n tap(() => this._detect())\r\n );\r\n }\r\n\r\n get agent(): string | undefined {\r\n // Optimize getter performance\r\n if (this._agent) {\r\n return this._agent;\r\n }\r\n\r\n const value = localStorage.getItem(\"User-Agent\");\r\n this._agent = value!;\r\n\r\n return value!;\r\n }\r\n\r\n private _detect(): void {\r\n const body = document.getElementsByTagName(\"body\")[0];\r\n\r\n this.isMobile() ? body?.setAttribute(\"view\", \"mobile\") : body?.setAttribute(\"view\", \"web\");\r\n\r\n switch (true) {\r\n case this.isBrowser():\r\n body?.setAttribute(\"device\", \"browser\");\r\n break;\r\n case this.isIOS():\r\n body?.setAttribute(\"device\", \"ios\");\r\n break;\r\n case this.isAndroid():\r\n body?.setAttribute(\"device\", \"android\");\r\n break;\r\n default:\r\n body?.removeAttribute(\"device\");\r\n }\r\n }\r\n\r\n public isMobile() {\r\n // return this.deviceService.isMobile();\r\n return false;\r\n }\r\n\r\n public isBrowser() {\r\n return !this.agent;\r\n }\r\n\r\n public isIOS() {\r\n return this.agent && (this.agent.toLocaleLowerCase().includes(\"iphone\") || this.agent.toLocaleLowerCase().includes(\"ios\"));\r\n }\r\n\r\n public isAndroid() {\r\n return this.agent && this.agent.toLocaleLowerCase().includes(\"android\");\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n CookiesStorageKeys,\r\n LocalStorageKeys,\r\n SessionStorageKeys,\r\n StorageEnum,\r\n} from '../handlers/stortage';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class StorageService {\r\n private cookieService = inject(CookieService);\r\n // ---------------------------\r\n // Cookies\r\n // ---------------------------\r\n public get cookies() {\r\n return {\r\n set: (key: CookiesStorageKeys, value: string, expires?: number) =>\r\n this.cookieService.set(key, value, expires),\r\n get: (key: CookiesStorageKeys) => this.cookieService.get(key),\r\n clear: (key: CookiesStorageKeys) => this.cookieService.delete(key)\r\n };\r\n }\r\n\r\n // ---------------------------\r\n // Local Storage\r\n // ---------------------------\r\n public local = {\r\n set: (key: LocalStorageKeys, value: unknown) =>\r\n this.setItem(key, value, localStorage.setItem.bind(localStorage)),\r\n get: <T>(key: LocalStorageKeys) =>\r\n this.getItem<T>(key, localStorage.getItem.bind(localStorage)),\r\n clear: () => localStorage.clear(),\r\n };\r\n\r\n // ---------------------------\r\n // Session Storage\r\n // ---------------------------\r\n public session = {\r\n set: (key: SessionStorageKeys, value: unknown) =>\r\n this.setItem(key, value, sessionStorage.setItem.bind(sessionStorage)),\r\n get: <T>(key: SessionStorageKeys) =>\r\n this.getItem<T>(key, sessionStorage.getItem.bind(sessionStorage)),\r\n clear: () => sessionStorage.clear(),\r\n };\r\n\r\n // ---------------------------\r\n // Helpers\r\n // ---------------------------\r\n private setItem(\r\n key: StorageEnum,\r\n value: unknown,\r\n setFn: (key: string, value: string) => void\r\n ): void {\r\n if (!key) return;\r\n setFn(key as string, typeof value === 'string' ? value : JSON.stringify(value));\r\n }\r\n\r\n private getItem<T>(\r\n key: StorageEnum,\r\n getFn: (key: string) => string | null,\r\n withParsing = false\r\n ): T | null {\r\n const data = getFn(key as string) ?? null;\r\n if (data) {\r\n return withParsing ? (JSON.parse(data) as T) : (data as unknown as T);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { AsyncPipe, NgClass } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport {TranslatePipe} from \"@ngx-translate/core\";\r\nimport {LoaderService} from \"../../services\";\r\n\r\n@Component({\r\n selector: \"global-loader\",\r\n templateUrl: \"./global-loader.component.html\",\r\n styleUrls: [\"./global-loader.component.scss\"],\r\n standalone: true,\r\n imports: [AsyncPipe, NgClass, TranslatePipe]\r\n})\r\nexport class GlobalLoaderComponent {\r\n @Input() color!: string;\r\n constructor(public loaderService: LoaderService) {}\r\n}\r\n","@if (loaderService.isLoading$ | async; as data) {\r\n @if (data && data.show) {\r\n <div class=\"loader\" [ngClass]=\"{ 'system-loader': data.isSystemLoader, 'absolute': !data.isSystemLoader }\"\r\n [style.--spinner-color]=\"color\">\r\n <div class=\"loader-spinner\"></div>\r\n <p class=\"loader-text\">{{ 'shared.loading' | translate }}</p>\r\n </div>\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn } from '@angular/router';\r\nimport { StorageHandler } from '../handlers/storage-handler';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { CORE_CONFIG, CoreConfig } from '../core-config';\r\nimport { CookiesStorageKeys } from '../handlers';\r\n\r\nexport const authGuard: CanActivateFn = () => {\r\n const appConfig = inject<CoreConfig>(CORE_CONFIG);\r\n const cookieService = inject(CookieService);\r\n StorageHandler.init(cookieService);\r\n const token: string | null = StorageHandler.cookies.get(CookiesStorageKeys.AUTHORIZATION);\r\n\r\n if (!token) {\r\n window.location.href = appConfig.loginUrl;\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n","import { inject } from \"@angular/core\";\r\nimport { CanActivateFn, Router } from \"@angular/router\";\r\nimport { PermissionsService } from \"../services\";\r\nimport { RoutePermissionsInfo } from \"../interfaces\";\r\n\r\nexport const permissionsGuard: CanActivateFn = (route) => {\r\n const permissionsService = inject(PermissionsService);\r\n const router = inject(Router);\r\n const { key, action }: RoutePermissionsInfo = route.data[\"permissions\"];\r\n\r\n if (!route.data[\"permissions\"] || (route.data[\"permissions\"] && permissionsService.routeGuardChecker(key, action))) {\r\n return true;\r\n } else {\r\n router.navigate([\"no-access\"]);\r\n return false;\r\n }\r\n};\r\n","export enum UserPermissionsEnum {\r\n BOD = \"BOD\",\r\n BOARD_COMMITTEES = \"BOARD_COMMITTEES\",\r\n BOARD_MEETINGS = \"BOARD_MEETINGS\",\r\n MEETING_INSIDE_THE_BOD = \"MEETING_INSIDE_THE_BOD\",\r\n COMMITTEE = \"COMMITTEE\",\r\n MEETING_INSIDE_THE_COMMITTEE = \"MEETING_INSIDE_THE_COMMITTEE\",\r\n MEETING = \"MEETING\",\r\n DECISION = \"DECISION\",\r\n RECOMMENDATION = \"RECOMMENDATION\",\r\n TASK = \"TASK\",\r\n VOTING = \"VOTING\",\r\n VOTING_SECRETARY_RESULTS = \"VOTING_SECRETARY_RESULTS\",\r\n VOTING_RESULTS = \"VOTING_RESULTS\",\r\n DRAFT_MOM = \"DRAFT_MOM\",\r\n FINAL_MOM = \"FINAL_MOM\",\r\n MOM = \"MOM\",\r\n AGENDA = \"AGENDA\",\r\n ATTENDEES = \"ATTENDEES\",\r\n COMMENT = \"COMMENT\"\r\n}\r\n\r\nexport enum PermissionsActions {\r\n VIEW = \"VIEW\",\r\n CREATE = \"CREATE\",\r\n EDIT = \"EDIT\",\r\n DELETE = \"DELETE\",\r\n REORDER = \"REORDER\",\r\n DOWNLOAD = \"DOWNLOAD\",\r\n MARK = \"MARK\",\r\n GENERATE = \"GENERATE\",\r\n TERMINATE = \"TERMINATE\",\r\n START = \"START\",\r\n END = \"END\",\r\n ACTIVATE = \"ACTIVATE\"\r\n}\r\n","export enum DateFormatter {\r\n FULL_DATE_TIME = \"dd MMM yyyy - hh:mm a\",\r\n DATE_TIME_ZONE = \"yyyy-MM-dd'T'HH:mm:ssxxx\",\r\n DATE_UTC = \"yyyy-MM-dd'T'HH:mm:ss'Z'\",\r\n dd_MM_yyyy = \"dd-MM-yyyy\",\r\n yyyy_MM_dd = \"yyyy-MM-dd\",\r\n MMM_dd_yyyy = \"MMM dd ,yyyy\",\r\n MM_D_yyy = \"MM dd ,yyy\",\r\n MMM_D_YYY_Time = \"MMM dd ,YYYY - hh:mm a\",\r\n MMM_d_y_Time = \"MMM d, y, h:mm a\",\r\n d_MM_y = \"d MMM y\",\r\n MMM_D_Y = \"MMM d, y\",\r\n DD_MM = \"dd MMM\",\r\n DATE_PICKER = \"dd/MM/yyyy\",\r\n DATE_FULL_YEAR = \"yyyy\"\r\n}\r\n","export enum DisplayTypesEnum {\r\n WEB_ONLY = \"webOnly\",\r\n MOBILE_ONLY = \"mobileOnly\"\r\n}\r\n","export enum Language {\r\n AR = \"ar\",\r\n EN = \"en\"\r\n}\r\n\r\nexport enum AppDirection {\r\n RTL = \"rtl\",\r\n LTR = \"ltr\"\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PermissionsService } from '../services';\r\nimport { PermissionsActions, UserPermissionsEnum } from '../enums';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[hasPermissions]',\r\n standalone: true\r\n})\r\nexport class HasPermissionsDirective implements OnInit, OnDestroy {\r\n private _actions: string[];\r\n private _key: string;\r\n private _newPermissions: string[];\r\n private _isDomain: boolean;\r\n\r\n private isViewCreated = false;\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private permissionsService: PermissionsService,\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>\r\n ) {}\r\n\r\n /**\r\n * make sure that the key value looks like the UserPermissionsEnum enum\r\n * usage: *permissions=\"[PermissionsActions.EDIT]; key: LOOKUPS\r\n */\r\n\r\n @Input({ required: true }) set hasPermissions(actions: string[]) {\r\n if (this.arraysChanged(this._actions, actions)) {\r\n this._actions = actions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input({ required: true }) set hasPermissionsKey(key: string) {\r\n if (this._key !== key) {\r\n this._key = key;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsNewPermissions(newPermissions: string[]) {\r\n if (this.arraysChanged(this._newPermissions, newPermissions)) {\r\n this._newPermissions = newPermissions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsIsDomain(isDomain: boolean) {\r\n if (this._isDomain !== isDomain) {\r\n this._isDomain = isDomain;\r\n this.updateView();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.permissionsService.domainPermissions$.subscribe(() => {\r\n if (this._isDomain) {\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n private updateView() {\r\n const canShow = this._actions.some(action => this.hasPermission(action));\r\n\r\n if (canShow && !this.isViewCreated) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n this.isViewCreated = true;\r\n } else if (!canShow && this.isViewCreated) {\r\n this.clearView();\r\n }\r\n }\r\n\r\n private hasPermission(action: string): boolean {\r\n if (this._isDomain) {\r\n return this.permissionsService.checkDomainHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions\r\n );\r\n }\r\n\r\n return this.permissionsService.checkKeyHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions,\r\n this._newPermissions\r\n );\r\n }\r\n\r\n private clearView() {\r\n this.viewContainer.clear();\r\n this.isViewCreated = false;\r\n }\r\n\r\n private arraysChanged(a?: string[], b?: string[]): boolean {\r\n if (a === b) return false;\r\n if (!a || !b) return true;\r\n if (a.length !== b.length) return true;\r\n return a.some((v, i) => v !== b[i]);\r\n }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { DetectDeviceService } from \"../services/detect-device.service\";\r\nimport { DisplayTypesEnum } from \"../enums/display-types.enum\";\r\n\r\n/*\r\n * Usage:\r\n * <div *responsiveElement=\"DisplayTypes.WEB_ONLY\">Web</div>\r\n * <div *responsiveElement=\"DisplayTypes.MOBILE_ONLY\">Mobile</div>\r\n * */\r\n\r\n@Directive({\r\n selector: \"[responsiveElement]\",\r\n standalone: true\r\n})\r\nexport class ResponsiveElementDirective implements OnInit, OnDestroy {\r\n @Input(\"responsiveElement\") displayFor: DisplayTypesEnum.WEB_ONLY | DisplayTypesEnum.MOBILE_ONLY;\r\n\r\n private resizeSubscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n private detectDeviceServiceService: DetectDeviceService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.resizeSubscription.add(this.detectDeviceServiceService.onResize$.subscribe(this.checkWidth.bind(this)));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeSubscription.unsubscribe();\r\n }\r\n\r\n private checkWidth() {\r\n const shouldDisplay =\r\n (this.displayFor === DisplayTypesEnum.WEB_ONLY && !this.detectDeviceServiceService.isMobile()) ||\r\n (this.displayFor === DisplayTypesEnum.MOBILE_ONLY && this.detectDeviceServiceService.isMobile());\r\n if (shouldDisplay) {\r\n this.viewContainer.length === 0 && this.viewContainer.createEmbeddedView(this.templateRef);\r\n } else {\r\n this.viewContainer.clear();\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LoaderService","i1.PermissionsService","i1.DetectDeviceService"],"mappings":"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"}
1
+ {"version":3,"file":"corp-products-app-core.mjs","sources":["../../../projects/core/src/lib/services/base-pagination-service/pagination.ts","../../../projects/core/src/lib/services/base-pagination-service/base-pagination.service.ts","../../../projects/core/src/lib/handlers/stortage.ts","../../../projects/core/src/lib/core-config.ts","../../../projects/core/src/lib/services/base-http-service/base-http-types.ts","../../../projects/core/src/lib/services/base-http-service/base-http-utils.ts","../../../projects/core/src/lib/services/base-http-service/base-http.service.ts","../../../projects/core/src/lib/services/auth.service.ts","../../../projects/core/src/lib/services/jwt-decoder.service.ts","../../../projects/core/src/lib/interceptors/app-http-config.ts","../../../projects/core/src/lib/handlers/http-context-handler.ts","../../../projects/core/src/lib/services/loader.service.ts","../../../projects/core/src/lib/request-modifier.ts","../../../projects/core/src/lib/error-config.ts","../../../projects/core/src/lib/enums/error-code.enum.ts","../../../projects/core/src/lib/interceptors/base-http.interceptor.ts","../../../projects/core/src/lib/interceptors/global-http-error.interceptor.ts","../../../projects/core/src/lib/services/lov.service.ts","../../../projects/core/src/lib/services/error-handler.service.ts","../../../projects/core/src/lib/services/permissions.service.ts","../../../projects/core/src/lib/services/detect-device.service.ts","../../../projects/core/src/lib/services/storage.service.ts","../../../projects/core/src/lib/components/global-loader/global-loader.component.ts","../../../projects/core/src/lib/components/global-loader/global-loader.component.html","../../../projects/core/src/lib/guards/auth.guard.ts","../../../projects/core/src/lib/guards/permissions.guard.ts","../../../projects/core/src/lib/enums/user-permissions.enum.ts","../../../projects/core/src/lib/enums/date-formatter.enum.ts","../../../projects/core/src/lib/enums/display-types.enum.ts","../../../projects/core/src/lib/enums/localization.enum.ts","../../../projects/core/src/lib/directives/permissions.directive.ts","../../../projects/core/src/lib/directives/responsive-element.directive.ts","../../../projects/core/src/lib/handlers/storage-handler.ts","../../../projects/core/src/corp-products-app-core.ts"],"sourcesContent":["export const PAGESIZE = 10;\r\nexport const PAGE_SIZE_OPTION = [5, 10, 15, 20];\r\nexport enum SortDirection {\r\n ASC = 'ASC',\r\n DESC = 'DESC'\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { ListOptions } from './list-options.interface';\r\nimport { PAGE_SIZE_OPTION, PAGESIZE, SortDirection } from './pagination';\r\nexport abstract class BasePaginationService<T = any> {\r\n totalRecords = 0;\r\n totalPages = 0;\r\n rowsChange: number = PAGESIZE;\r\n\r\n pageSizes = PAGE_SIZE_OPTION;\r\n defaultSortValue = 'createdAt';\r\n defaultSortDirection = SortDirection.DESC;\r\n first: number | undefined = 0;\r\n\r\n listOptions: ListOptions = {\r\n searchValue: '',\r\n paginator: this.rowsChange,\r\n page: 0,\r\n direction: this.defaultSortDirection,\r\n sortBy: this.defaultSortValue,\r\n };\r\n\r\n abstract getList(listOptions: ListOptions): void | Observable<T>;\r\n\r\n createListFilter(filters: { [key: string]: unknown }): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n ...filters,\r\n };\r\n }\r\n\r\n resetList(): void {\r\n this.listOptions = {\r\n searchValue: '',\r\n paginator: this.rowsChange,\r\n page: 0,\r\n };\r\n }\r\n\r\n resetPaginator(): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n paginator: this.rowsChange,\r\n page: 0,\r\n };\r\n }\r\n\r\n onPageChange(event: any): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n page: event.page,\r\n paginator: event.rows,\r\n };\r\n this.first = event.first ?? 0;\r\n this.getList(this.listOptions);\r\n }\r\n}\r\n","export enum LocalStorageKeys {\r\n LANGUAGE = \"LANGUAGE\",\r\n TOKEN = \"TOKEN\"\r\n}\r\n\r\nexport enum SessionStorageKeys {}\r\nexport type StorageEnum = SessionStorageKeys | LocalStorageKeys | CookiesStorageKeys;\r\n\r\nexport enum CookiesStorageKeys {\r\n LANGUAGE = \"LANGUAGE\",\r\n TOKEN = \"TOKEN\",\r\n AUTHORIZATION = \"Authorization\"\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { ToasterOptions } from \"./interfaces\";\r\n\r\nexport interface CoreConfig {\r\n apiPrefix: string;\r\n production: boolean;\r\n gatewayUrl: string;\r\n loginUrl: string;\r\n logoutEndpoint: string;\r\n}\r\n\r\nexport const CORE_CONFIG = new InjectionToken<CoreConfig>(\"CoreConfig\");\r\n\r\n\r\nexport interface ToasterInterface {\r\n success(options:ToasterOptions): void;\r\n error(options:ToasterOptions): void;\r\n warning(options:ToasterOptions): void;\r\n info(options:ToasterOptions): void;\r\n}\r\nexport const TOASTER_SERVICE = new InjectionToken<ToasterInterface>(\"ToasterService\");\r\n","import { HttpContext, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Params as RouterParams } from '@angular/router';\r\n\r\nexport interface HttpConfig {\r\n apiUrl?: string;\r\n microServiceUrl:string;\r\n globalMapFn?: (res: any) => any;\r\n methods?: ServiceConfig;\r\n}\r\n\r\nexport type Params =\r\n | HttpParams\r\n | { [param: string]: string | string[] | unknown };\r\nexport type HttpRequestOptions = {\r\n headers?:\r\n | HttpHeaders\r\n | RouterParams\r\n | { [header: string]: string | string[] };\r\n params?: HttpParams | { [param: string]: string | string[] } | Params;\r\n context?: HttpContext;\r\n reportProgress?: boolean;\r\n observe?: 'events';\r\n responseType?: string;\r\n};\r\nexport const HttpRequestOptionsKeys: Array<keyof Required<HttpRequestOptions>> =\r\n ['headers', 'params', 'context', 'reportProgress', 'observe', 'responseType'];\r\n\r\nexport type HttpOptions<T = any> = HttpRequestOptions & {\r\n urlRewrite?: string;\r\n urlPostfix?: string;\r\n mapFn?: (res: any) => T;\r\n};\r\n\r\nexport interface ServiceConfig {\r\n single?: HttpOptions;\r\n getAll?: HttpOptions;\r\n add?: HttpOptions;\r\n update?: HttpOptions;\r\n delete?: HttpOptions;\r\n}\r\n\r\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n","import { map } from \"rxjs/operators\";\r\nimport { HttpOptions, HttpRequestOptionsKeys } from \"./base-http-types\";\r\nimport { BaseHttpResponse } from \"./base-http-response\";\r\n\r\nexport const resolveUrl = (baseUrl: string, options?: HttpOptions, ...args: string[]): string => {\r\n const { urlRewrite, urlPostfix } = options || {};\r\n\r\n if (urlRewrite) {\r\n return urlRewrite;\r\n }\r\n\r\n let result = baseUrl;\r\n\r\n if (args && args.length > 0 && args[0] !== \"\") {\r\n result += `/${args.join(\"/\")}`;\r\n }\r\n\r\n if (urlPostfix) {\r\n result += `/${urlPostfix}`;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const extractRequestOptions = (options?: any) => {\r\n if (!options || typeof options !== \"object\") {\r\n return {};\r\n }\r\n /* eslint-disable */\r\n return HttpRequestOptionsKeys.reduce((requestOptions: any, key) => {\r\n const value = options[key];\r\n\r\n if (value !== undefined) {\r\n requestOptions[key] = value;\r\n }\r\n\r\n return requestOptions;\r\n }, {});\r\n};\r\n\r\nexport const mapResponse = <T>(options?: HttpOptions) => map((res: T) => (options?.mapFn ? options.mapFn(res) : res));\r\n\r\nexport const epmDefaultMapper = <T>(res: BaseHttpResponse<T>) => res.payload;\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpConfig, HttpOptions, ServiceConfig } from './base-http-types';\r\nimport { epmDefaultMapper, extractRequestOptions, mapResponse, resolveUrl } from './base-http-utils';\r\n\r\nexport abstract class BaseHttpService {\r\n private readonly http: HttpClient = inject(HttpClient);\r\n\r\n get url(): string {\r\n const { apiUrl,microServiceUrl } = this.setApiConfig();\r\n return `${microServiceUrl}${apiUrl ? `/${apiUrl}` : ''}`;\r\n }\r\n\r\n get methodsConfig(): ServiceConfig | undefined {\r\n const { methods } = this.setApiConfig();\r\n return methods;\r\n }\r\n\r\n get globalMapFn(): (res: any) => any {\r\n const { globalMapFn } = this.setApiConfig();\r\n return globalMapFn || epmDefaultMapper;\r\n }\r\n\r\n abstract setApiConfig(): HttpConfig;\r\n\r\n single<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('single');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n getAll<T>(options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('getAll');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n add<T>(body: unknown, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('add');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .post<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n update<T>(\r\n id: string | number | undefined,\r\n body: unknown,\r\n options?: HttpOptions\r\n ): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('update');\r\n const url = id? resolveUrl(this.url, activeOptions, id?.toString()) : resolveUrl(this.url, activeOptions);\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .put<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n delete<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('delete');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .delete<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n protected getMethodConfig(method: keyof ServiceConfig): any {\r\n return this.methodsConfig ? this.methodsConfig[method] : undefined;\r\n }\r\n\r\n protected getMapFun(options?: HttpOptions) {\r\n const getMapFunObj = {\r\n default: { mapFn: epmDefaultMapper },\r\n custom: { mapFn: this.globalMapFn },\r\n };\r\n\r\n if (\r\n options &&\r\n (options?.reportProgress || options?.responseType === 'blob')\r\n ) {\r\n return { mapFn: (res: unknown) => res };\r\n }\r\n\r\n if (options && options?.mapFn) {\r\n return { mapFn: options.mapFn };\r\n }\r\n\r\n const isGlobalMapFnValid =\r\n this.globalMapFn && typeof this.globalMapFn === 'function';\r\n return isGlobalMapFnValid ? getMapFunObj.custom : getMapFunObj.default;\r\n }\r\n}\r\n","import { inject, Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CookiesStorageKeys, LocalStorageKeys } from '../handlers/stortage';\r\nimport { CORE_CONFIG, CoreConfig } from '../core-config';\r\nimport { BaseHttpService, HttpConfig } from './base-http-service';\r\nimport { StorageService } from '../services';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService extends BaseHttpService {\r\n public isUserLoggedIn$ = new BehaviorSubject<boolean>(false);\r\n private storageService = inject(StorageService);\r\n\r\n constructor(@Inject(CORE_CONFIG) protected appConfig: CoreConfig) {\r\n super();\r\n this.isUserLoggedIn$.next(this.isLoggedIn());\r\n }\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n apiUrl: '',\r\n microServiceUrl: '',\r\n };\r\n }\r\n\r\n initAuthentication() {\r\n const token: string | null = new URLSearchParams(window.location.search).get('token');\r\n if (token) {\r\n this.setAuthentication(token);\r\n window.location.search = '';\r\n }\r\n }\r\n\r\n setAuthentication(token: string) {\r\n this.isUserLoggedIn$.next(true);\r\n this.setUserToken(token);\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return !!this.getUserToken();\r\n }\r\n\r\n getUserToken(): string | null {\r\n return this.storageService.cookies.get(CookiesStorageKeys.AUTHORIZATION);\r\n }\r\n\r\n setUserToken(token?: string) {\r\n return this.storageService.local.set(LocalStorageKeys.TOKEN, token);\r\n }\r\n\r\n logoutFromSSO() {\r\n const logoutUrl = this.appConfig.logoutEndpoint;\r\n return this.single<unknown>('', {\r\n urlRewrite: logoutUrl,\r\n });\r\n }\r\n\r\n clearAuth() {\r\n this.storageService.local.clear();\r\n this.storageService.session.clear();\r\n this.storageService.cookies.clear(CookiesStorageKeys.AUTHORIZATION);\r\n this.isUserLoggedIn$.next(false);\r\n window.location.href = this.appConfig.loginUrl;\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { jwtDecode } from \"jwt-decode\";\r\nimport { AuthService } from \"./auth.service\";\r\nimport { JWTDecoded } from \"../interfaces/jwt-token-decoded.interface\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class JwtDecoderService {\r\n authService = inject(AuthService);\r\n public decodedToken: JWTDecoded;\r\n\r\n constructor() {\r\n this.decodeToken();\r\n }\r\n\r\n public decodeToken() {\r\n const token: string = this.authService.getUserToken() as string;\r\n if (token) {\r\n this.decodedToken = jwtDecode(token);\r\n }\r\n }\r\n}\r\n","export const COMMON_BASE_URL = \"common/api/v1\";\r\nexport const APP_HTTP_CONFIG = {\r\n BOARD_BASE_URL: \"board-acl/private/v1\",\r\n MEETING_BASE_URL: \"meeting-acl/private/v1\",\r\n IGATE_BASE_URL: COMMON_BASE_URL + \"/igate-users\",\r\n LOV_BASE_URL: COMMON_BASE_URL + \"/lov\",\r\n ATTACHMENT_BASE_URL: COMMON_BASE_URL + \"/attachment\"\r\n};\r\n","import { HttpContext, HttpContextToken } from \"@angular/common/http\";\r\n\r\nexport const IS_SYSTEM_LOADER = new HttpContextToken<boolean>(() => true); // set default loader\r\nexport const USE_API_PREFIX = new HttpContextToken<boolean>(() => true); // set default loader\r\n\r\nexport class HttpContextHandler {\r\n static setLoaderType(isSystemLoader: boolean) {\r\n return new HttpContext().set(IS_SYSTEM_LOADER, isSystemLoader);\r\n }\r\n\r\n static useApiPrefix(hasBaseSegment: boolean) {\r\n return new HttpContext().set(USE_API_PREFIX, hasBaseSegment);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport interface LoaderState {\r\n show: boolean;\r\n isSystemLoader?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LoaderService {\r\n isLoading$ = new BehaviorSubject<LoaderState>({ show: false });\r\n private loadingMap: Map<string, boolean> = new Map<string, boolean>();\r\n\r\n setLoading(loading: boolean, isSystemLoader = true, url: string): void {\r\n if (!url) {\r\n throw new Error(\"The request URL must be provided to the LoaderService.setLoading function\");\r\n }\r\n\r\n if (loading) {\r\n this.loadingMap.set(url, loading);\r\n this.isLoading$.next({ show: true, isSystemLoader });\r\n } else if (!loading && this.loadingMap.has(url)) {\r\n this.loadingMap.delete(url);\r\n }\r\n\r\n if (!this.loadingMap.size) {\r\n this.isLoading$.next({ show: false });\r\n }\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { HttpRequest } from '@angular/common/http';\r\n\r\nexport type RequestModifier = (req: HttpRequest<any>) => HttpRequest<any>;\r\n\r\nexport const REQUEST_MODIFIER = new InjectionToken<RequestModifier>('REQUEST_MODIFIER');\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const APP_ERROR_HANDLER = new InjectionToken<(error: any) => void>(\r\n 'APP_ERROR_HANDLER',\r\n {\r\n factory: () => (error: any) => {\r\n console.warn('No APP_ERROR_HANDLER provided', error);\r\n },\r\n }\r\n);\r\n","export enum ErrorCode {\r\n JWT_EXPIRED = \"JWT_EXPIRED\",\r\n UNAUTHORIZED = \"UNAUTHORIZED\"\r\n}\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport {\r\n catchError,\r\n finalize,\r\n Observable,\r\n switchMap,\r\n throwError,\r\n from,\r\n mergeMap\r\n} from 'rxjs';\r\nimport { IS_SYSTEM_LOADER } from '../handlers/http-context-handler';\r\nimport { LoaderService } from '../services/loader.service';\r\nimport { CORE_CONFIG, CoreConfig } from '../core-config';\r\nimport { REQUEST_MODIFIER } from '../request-modifier';\r\nimport { APP_ERROR_HANDLER } from '../error-config';\r\nimport { ErrorCode } from '../enums/error-code.enum';\r\n\r\n@Injectable()\r\nexport class HttpBaseInterceptor implements HttpInterceptor {\r\n isRefreshTokenCalled = false;\r\n pendingRequests: { req: HttpRequest<any>; next: HttpHandler }[] = [];\r\n loaderService = inject(LoaderService);\r\n\r\n constructor(\r\n @Inject(CORE_CONFIG) protected appConfig: CoreConfig,\r\n @Inject(REQUEST_MODIFIER)\r\n protected requestModifier: (req: HttpRequest<any>) => HttpRequest<any>,\r\n @Inject(APP_ERROR_HANDLER)\r\n private appErrorHandler: (error: any) => Observable<any>\r\n ) { }\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n request = this.requestModifier(request);\r\n\r\n const IS_SYSTEM_LOADER_CHECK = request.context.get(IS_SYSTEM_LOADER);\r\n this.loaderService.setLoading(true, IS_SYSTEM_LOADER_CHECK, request.url);\r\n\r\n return next.handle(request).pipe(\r\n catchError((err: HttpErrorResponse) => {\r\n if (err?.error?.errors?.errorCode === ErrorCode.JWT_EXPIRED) {\r\n this.pendingRequests.push({ req: request, next });\r\n }\r\n if (!this.isRefreshTokenCalled) {\r\n this.isRefreshTokenCalled = true;\r\n if (!this.appErrorHandler) return throwError(() => err);\r\n return this.appErrorHandler(err).pipe(\r\n switchMap((shouldRetry: boolean) => {\r\n if (shouldRetry) {\r\n this.isRefreshTokenCalled = false;\r\n const queued = [...this.pendingRequests];\r\n this.pendingRequests = [];\r\n if (queued.length > 0) {\r\n return from(queued).pipe(\r\n mergeMap((p) => p.next.handle(p.req))\r\n );\r\n }\r\n }\r\n return throwError(() => err);\r\n })\r\n );\r\n }\r\n return throwError(() => err);\r\n }),\r\n finalize(() =>\r\n this.loaderService.setLoading(false, IS_SYSTEM_LOADER_CHECK, request.url)\r\n )\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, retry, timer } from 'rxjs';\r\n\r\nexport class GlobalHttpErrorInterceptor implements HttpInterceptor {\r\n // check if it is a server error to retry the request\r\n shouldRetry(error: HttpErrorResponse) {\r\n if (error.status >= 500) {\r\n return timer(1000);\r\n }\r\n throw error;\r\n }\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n retry({\r\n count: 1,\r\n delay: this.shouldRetry\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { APP_HTTP_CONFIG } from '../interceptors';\r\nimport { BaseHttpService, HttpConfig } from './base-http-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ListOfValues extends BaseHttpService {\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n microServiceUrl: APP_HTTP_CONFIG.LOV_BASE_URL,\r\n apiUrl: \"lookups\"\r\n };\r\n }\r\n\r\n getRolesByGroup<T>(group: string): Observable<T> {\r\n return this.getAll<T>({\r\n urlPostfix: group\r\n });\r\n }\r\n}\r\n","import { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { ErrorHandler, Injectable, Injector } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { TOASTER_SERVICE, ToasterInterface } from \"../core-config\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ErrorHandlerService implements ErrorHandler {\r\n constructor(\r\n private injector: Injector,\r\n private translateService: TranslateService\r\n ) {}\r\n\r\n private get toasterService(): ToasterInterface {\r\n return this.injector.get<ToasterInterface>(TOASTER_SERVICE);\r\n }\r\n\r\n handleError(error: unknown): void {\r\n console.log(\"ErrorHandlerServicee\", error);\r\n if (error instanceof Error && !(error instanceof HttpErrorResponse)) {\r\n console.error(error);\r\n return;\r\n }\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n console.error(\"HTTP Error:\", error);\r\n\r\n switch (error?.status) {\r\n case 400:\r\n this.showError(`codes.${error.error.errors.errorType}`);\r\n break\r\n case 401:\r\n //TODO : Check After Implement login\r\n this.showError(`network_errors.${error.error.errors.errorType}`);\r\n break;\r\n case 404:\r\n this.showError(`network_errors.${error.error.errors.errorType}`);\r\n break;\r\n case 403:\r\n this.showError(\"forbidden.message\");\r\n break;\r\n case 500:\r\n this.showError(\"validation_error.server\");\r\n break;\r\n default:\r\n this.showError(\"validation_error.random\");\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private showError(messageKey: string): void {\r\n this.toasterService.error({\r\n title: this.translateService.instant(\"error.title\"),\r\n message: this.translateService.instant(`error.${messageKey}`),\r\n });\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { JwtDecoderService } from \"./jwt-decoder.service\";\r\nimport { PermissionsActions, UserPermissionsEnum } from \"../enums\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PermissionsService {\r\n private jwtDecoderService = inject(JwtDecoderService);\r\n private decodedToken = this.jwtDecoderService.decodedToken;\r\n private tokenPermissions = this.decodedToken ? this.decodedToken.permissions as [] : [];\r\n private domainPermissionsSubject = new BehaviorSubject<string[]>([]);\r\n domainPermissions$ = this.domainPermissionsSubject.asObservable();\r\n\r\n private getKeyName(action: string) {\r\n const actionsArr = action.split(\"_\");\r\n return actionsArr.splice(1, actionsArr.length - 1).join(\"_\");\r\n }\r\n\r\n getActionName(action: string) {\r\n return action.split(\"_\")[0];\r\n }\r\n\r\n getAllowedActionsByKey(key: UserPermissionsEnum, newPermissions?: string[]) {\r\n const permissionsNeeded = newPermissions || this.tokenPermissions;\r\n if (!permissionsNeeded) {\r\n console.error(\"There are no permissions available\");\r\n return [];\r\n }\r\n return permissionsNeeded\r\n .filter((p) => {\r\n return key === this.getKeyName(p);\r\n })\r\n .map((t) => {\r\n return this.getActionName(t);\r\n });\r\n }\r\n\r\n checkKeyHasPermission(key: UserPermissionsEnum, action: PermissionsActions, newPermissions?: string[]) {\r\n return this.getAllowedActionsByKey(key, newPermissions).some((p) => p === action);\r\n }\r\n\r\n checkDomainHasPermission(key: UserPermissionsEnum, action: PermissionsActions) {\r\n return this.getAllowedActionsByKey(key, this.getDomainPermissions()).some((p) => p === action);\r\n }\r\n\r\n routeGuardChecker(key: UserPermissionsEnum, action: PermissionsActions) {\r\n if(!this.checkKeyHasPermission(key, action)){\r\n return this.checkKeyHasPermission(key, action,this.getDomainPermissions());\r\n }\r\n return true;\r\n }\r\n\r\n clearDomainPermissions() {\r\n this.domainPermissionsSubject.next([]);\r\n }\r\n\r\n setDomainPermissions(permissions: string[]) {\r\n this.domainPermissionsSubject.next(permissions);\r\n }\r\n\r\n getDomainPermissions(): string[] {\r\n return this.domainPermissionsSubject.getValue();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n//import { DeviceDetectorService } from \"ngx-device-detector\";\r\nimport { debounceTime, distinctUntilChanged, fromEvent, Observable, startWith, Subject, tap } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class DetectDeviceService {\r\n currentWidth: number = window.innerWidth;\r\n private _width$: Subject<number> = new Subject();\r\n private _agent: string;\r\n constructor() {\r\n fromEvent(window, \"resize\")\r\n .pipe(distinctUntilChanged(), debounceTime(200))\r\n .subscribe((event) => this._handelResize(event));\r\n }\r\n\r\n private _handelResize(event: any) {\r\n this._width$.next(event.target.innerWidth);\r\n this.currentWidth = event.target.innerWidth;\r\n }\r\n\r\n get onResize$(): Observable<number> {\r\n return this._width$.asObservable().pipe(\r\n debounceTime(100), // Debounce to avoid too many events\r\n startWith(window.innerWidth), // Trigger initial check\r\n distinctUntilChanged(), // Avoid duplication\r\n tap(() => this._detect())\r\n );\r\n }\r\n\r\n get agent(): string | undefined {\r\n // Optimize getter performance\r\n if (this._agent) {\r\n return this._agent;\r\n }\r\n\r\n const value = localStorage.getItem(\"User-Agent\");\r\n this._agent = value!;\r\n\r\n return value!;\r\n }\r\n\r\n private _detect(): void {\r\n const body = document.getElementsByTagName(\"body\")[0];\r\n\r\n this.isMobile() ? body?.setAttribute(\"view\", \"mobile\") : body?.setAttribute(\"view\", \"web\");\r\n\r\n switch (true) {\r\n case this.isBrowser():\r\n body?.setAttribute(\"device\", \"browser\");\r\n break;\r\n case this.isIOS():\r\n body?.setAttribute(\"device\", \"ios\");\r\n break;\r\n case this.isAndroid():\r\n body?.setAttribute(\"device\", \"android\");\r\n break;\r\n default:\r\n body?.removeAttribute(\"device\");\r\n }\r\n }\r\n\r\n public isMobile() {\r\n // return this.deviceService.isMobile();\r\n return false;\r\n }\r\n\r\n public isBrowser() {\r\n return !this.agent;\r\n }\r\n\r\n public isIOS() {\r\n return this.agent && (this.agent.toLocaleLowerCase().includes(\"iphone\") || this.agent.toLocaleLowerCase().includes(\"ios\"));\r\n }\r\n\r\n public isAndroid() {\r\n return this.agent && this.agent.toLocaleLowerCase().includes(\"android\");\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n CookiesStorageKeys,\r\n LocalStorageKeys,\r\n SessionStorageKeys,\r\n StorageEnum,\r\n} from '../handlers/stortage';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class StorageService {\r\n private cookieService = inject(CookieService);\r\n\r\n public get cookies() {\r\n return {\r\n set: (key: CookiesStorageKeys, value: string, expires?: number) =>\r\n this.cookieService.set(key, value, expires),\r\n get: (key: CookiesStorageKeys) => this.cookieService.get(key),\r\n clear: (key: CookiesStorageKeys) => this.cookieService.delete(key),\r\n };\r\n }\r\n\r\n public local = {\r\n set: (key: LocalStorageKeys, value: unknown) =>\r\n this.setItem(key, value, localStorage.setItem.bind(localStorage)),\r\n get: <T>(key: LocalStorageKeys) =>\r\n this.getItem<T>(key, localStorage.getItem.bind(localStorage)),\r\n clear: () => localStorage.clear(),\r\n };\r\n\r\n public session = {\r\n set: (key: SessionStorageKeys, value: unknown) =>\r\n this.setItem(key, value, sessionStorage.setItem.bind(sessionStorage)),\r\n get: <T>(key: SessionStorageKeys) =>\r\n this.getItem<T>(key, sessionStorage.getItem.bind(sessionStorage)),\r\n clear: () => sessionStorage.clear(),\r\n };\r\n\r\n private setItem(\r\n key: StorageEnum,\r\n value: unknown,\r\n setFn: (k: string, v: string) => void\r\n ): void {\r\n if (!key) return;\r\n setFn(key as string, typeof value === 'string' ? value : JSON.stringify(value));\r\n }\r\n\r\n private getItem<T>(\r\n key: StorageEnum,\r\n getFn: (k: string) => string | null,\r\n withParsing = false\r\n ): T | null {\r\n const data = getFn(key as string) ?? null;\r\n if (data) {\r\n return withParsing ? (JSON.parse(data) as T) : (data as unknown as T);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { AsyncPipe, NgClass } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport {TranslatePipe} from \"@ngx-translate/core\";\r\nimport {LoaderService} from \"../../services\";\r\n\r\n@Component({\r\n selector: \"global-loader\",\r\n templateUrl: \"./global-loader.component.html\",\r\n styleUrls: [\"./global-loader.component.scss\"],\r\n standalone: true,\r\n imports: [AsyncPipe, NgClass, TranslatePipe]\r\n})\r\nexport class GlobalLoaderComponent {\r\n @Input() color!: string;\r\n constructor(public loaderService: LoaderService) {}\r\n}\r\n","@if (loaderService.isLoading$ | async; as data) {\r\n @if (data && data.show) {\r\n <div class=\"loader\" [ngClass]=\"{ 'system-loader': data.isSystemLoader, 'absolute': !data.isSystemLoader }\"\r\n [style.--spinner-color]=\"color\">\r\n <div class=\"loader-spinner\"></div>\r\n <p class=\"loader-text\">{{ 'shared.loading' | translate }}</p>\r\n </div>\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn } from '@angular/router';\r\nimport { CORE_CONFIG, CoreConfig } from '../core-config';\r\nimport { AuthService } from '../services';\r\n\r\nexport const authGuard: CanActivateFn = () => {\r\n const appConfig = inject<CoreConfig>(CORE_CONFIG);\r\n const authService = inject(AuthService);\r\n\r\n if (!authService.isLoggedIn()) {\r\n window.location.href = appConfig.loginUrl;\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n","import { inject } from \"@angular/core\";\r\nimport { CanActivateFn, Router } from \"@angular/router\";\r\nimport { PermissionsService } from \"../services\";\r\nimport { RoutePermissionsInfo } from \"../interfaces\";\r\n\r\nexport const permissionsGuard: CanActivateFn = (route) => {\r\n const permissionsService = inject(PermissionsService);\r\n const router = inject(Router);\r\n const { key, action }: RoutePermissionsInfo = route.data[\"permissions\"];\r\n\r\n if (!route.data[\"permissions\"] || (route.data[\"permissions\"] && permissionsService.routeGuardChecker(key, action))) {\r\n return true;\r\n } else {\r\n router.navigate([\"no-access\"]);\r\n return false;\r\n }\r\n};\r\n","export enum UserPermissionsEnum {\r\n BOD = \"BOD\",\r\n BOARD_COMMITTEES = \"BOARD_COMMITTEES\",\r\n BOARD_MEETINGS = \"BOARD_MEETINGS\",\r\n MEETING_INSIDE_THE_BOD = \"MEETING_INSIDE_THE_BOD\",\r\n COMMITTEE = \"COMMITTEE\",\r\n MEETING_INSIDE_THE_COMMITTEE = \"MEETING_INSIDE_THE_COMMITTEE\",\r\n MEETING = \"MEETING\",\r\n DECISION = \"DECISION\",\r\n RECOMMENDATION = \"RECOMMENDATION\",\r\n TASK = \"TASK\",\r\n VOTING = \"VOTING\",\r\n VOTING_SECRETARY_RESULTS = \"VOTING_SECRETARY_RESULTS\",\r\n VOTING_RESULTS = \"VOTING_RESULTS\",\r\n DRAFT_MOM = \"DRAFT_MOM\",\r\n FINAL_MOM = \"FINAL_MOM\",\r\n MOM = \"MOM\",\r\n AGENDA = \"AGENDA\",\r\n ATTENDEES = \"ATTENDEES\",\r\n COMMENT = \"COMMENT\"\r\n}\r\n\r\nexport enum PermissionsActions {\r\n VIEW = \"VIEW\",\r\n CREATE = \"CREATE\",\r\n EDIT = \"EDIT\",\r\n DELETE = \"DELETE\",\r\n REORDER = \"REORDER\",\r\n DOWNLOAD = \"DOWNLOAD\",\r\n MARK = \"MARK\",\r\n GENERATE = \"GENERATE\",\r\n TERMINATE = \"TERMINATE\",\r\n START = \"START\",\r\n END = \"END\",\r\n ACTIVATE = \"ACTIVATE\"\r\n}\r\n","export enum DateFormatter {\r\n FULL_DATE_TIME = \"dd MMM yyyy - hh:mm a\",\r\n DATE_TIME_ZONE = \"yyyy-MM-dd'T'HH:mm:ssxxx\",\r\n DATE_UTC = \"yyyy-MM-dd'T'HH:mm:ss'Z'\",\r\n dd_MM_yyyy = \"dd-MM-yyyy\",\r\n yyyy_MM_dd = \"yyyy-MM-dd\",\r\n MMM_dd_yyyy = \"MMM dd ,yyyy\",\r\n MM_D_yyy = \"MM dd ,yyy\",\r\n MMM_D_YYY_Time = \"MMM dd ,YYYY - hh:mm a\",\r\n MMM_d_y_Time = \"MMM d, y, h:mm a\",\r\n d_MM_y = \"d MMM y\",\r\n MMM_D_Y = \"MMM d, y\",\r\n DD_MM = \"dd MMM\",\r\n DATE_PICKER = \"dd/MM/yyyy\",\r\n DATE_FULL_YEAR = \"yyyy\"\r\n}\r\n","export enum DisplayTypesEnum {\r\n WEB_ONLY = \"webOnly\",\r\n MOBILE_ONLY = \"mobileOnly\"\r\n}\r\n","export enum Language {\r\n AR = \"ar\",\r\n EN = \"en\"\r\n}\r\n\r\nexport enum AppDirection {\r\n RTL = \"rtl\",\r\n LTR = \"ltr\"\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PermissionsService } from '../services';\r\nimport { PermissionsActions, UserPermissionsEnum } from '../enums';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[hasPermissions]',\r\n standalone: true\r\n})\r\nexport class HasPermissionsDirective implements OnInit, OnDestroy {\r\n private _actions: string[];\r\n private _key: string;\r\n private _newPermissions: string[];\r\n private _isDomain: boolean;\r\n\r\n private isViewCreated = false;\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private permissionsService: PermissionsService,\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>\r\n ) {}\r\n\r\n /**\r\n * make sure that the key value looks like the UserPermissionsEnum enum\r\n * usage: *permissions=\"[PermissionsActions.EDIT]; key: LOOKUPS\r\n */\r\n\r\n @Input({ required: true }) set hasPermissions(actions: string[]) {\r\n if (this.arraysChanged(this._actions, actions)) {\r\n this._actions = actions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input({ required: true }) set hasPermissionsKey(key: string) {\r\n if (this._key !== key) {\r\n this._key = key;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsNewPermissions(newPermissions: string[]) {\r\n if (this.arraysChanged(this._newPermissions, newPermissions)) {\r\n this._newPermissions = newPermissions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsIsDomain(isDomain: boolean) {\r\n if (this._isDomain !== isDomain) {\r\n this._isDomain = isDomain;\r\n this.updateView();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.permissionsService.domainPermissions$.subscribe(() => {\r\n if (this._isDomain) {\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n private updateView() {\r\n const canShow = this._actions.some(action => this.hasPermission(action));\r\n\r\n if (canShow && !this.isViewCreated) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n this.isViewCreated = true;\r\n } else if (!canShow && this.isViewCreated) {\r\n this.clearView();\r\n }\r\n }\r\n\r\n private hasPermission(action: string): boolean {\r\n if (this._isDomain) {\r\n return this.permissionsService.checkDomainHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions\r\n );\r\n }\r\n\r\n return this.permissionsService.checkKeyHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions,\r\n this._newPermissions\r\n );\r\n }\r\n\r\n private clearView() {\r\n this.viewContainer.clear();\r\n this.isViewCreated = false;\r\n }\r\n\r\n private arraysChanged(a?: string[], b?: string[]): boolean {\r\n if (a === b) return false;\r\n if (!a || !b) return true;\r\n if (a.length !== b.length) return true;\r\n return a.some((v, i) => v !== b[i]);\r\n }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { DetectDeviceService } from \"../services/detect-device.service\";\r\nimport { DisplayTypesEnum } from \"../enums/display-types.enum\";\r\n\r\n/*\r\n * Usage:\r\n * <div *responsiveElement=\"DisplayTypes.WEB_ONLY\">Web</div>\r\n * <div *responsiveElement=\"DisplayTypes.MOBILE_ONLY\">Mobile</div>\r\n * */\r\n\r\n@Directive({\r\n selector: \"[responsiveElement]\",\r\n standalone: true\r\n})\r\nexport class ResponsiveElementDirective implements OnInit, OnDestroy {\r\n @Input(\"responsiveElement\") displayFor: DisplayTypesEnum.WEB_ONLY | DisplayTypesEnum.MOBILE_ONLY;\r\n\r\n private resizeSubscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n private detectDeviceServiceService: DetectDeviceService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.resizeSubscription.add(this.detectDeviceServiceService.onResize$.subscribe(this.checkWidth.bind(this)));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeSubscription.unsubscribe();\r\n }\r\n\r\n private checkWidth() {\r\n const shouldDisplay =\r\n (this.displayFor === DisplayTypesEnum.WEB_ONLY && !this.detectDeviceServiceService.isMobile()) ||\r\n (this.displayFor === DisplayTypesEnum.MOBILE_ONLY && this.detectDeviceServiceService.isMobile());\r\n if (shouldDisplay) {\r\n this.viewContainer.length === 0 && this.viewContainer.createEmbeddedView(this.templateRef);\r\n } else {\r\n this.viewContainer.clear();\r\n }\r\n }\r\n}\r\n","// Important for global context\r\nimport { CookiesStorageKeys, LocalStorageKeys, SessionStorageKeys, StorageEnum } from \"./stortage\";\r\nimport { CookieService } from \"ngx-cookie-service\";\r\n\r\nconst setLocalStorage = (key: string, value: string) => localStorage.setItem(key, value);\r\nconst getLocalStorage = (key: string) => localStorage.getItem(key);\r\nconst clearLocalStorage = () => localStorage.clear();\r\nconst setSessionStorage = (key: string, value: string) => sessionStorage.setItem(key, value);\r\nconst getSessionStorage = (key: string) => sessionStorage.getItem(key);\r\nconst clearSessionStorage = () => sessionStorage.clear();\r\n\r\nexport class StorageHandler {\r\n private static cookieService: CookieService;\r\n\r\n public static init(cookieService: CookieService): void {\r\n this.cookieService = cookieService;\r\n }\r\n\r\n public static get cookies() {\r\n if (!this.cookieService) {\r\n throw new Error(\r\n \"CookieService is not initialized. Call StorageHandler.init(cookieService) first.\"\r\n );\r\n }\r\n\r\n return {\r\n set: (key: CookiesStorageKeys, value: string, expires?: number) =>\r\n this.cookieService.set(key, value, expires),\r\n get: (key: CookiesStorageKeys) => this.cookieService.get(key),\r\n clear: (key: CookiesStorageKeys) => this.cookieService.delete(key)\r\n };\r\n }\r\n\r\n public static local = {\r\n set: (key: LocalStorageKeys, value: unknown) => this.setItem(key, value, setLocalStorage),\r\n get: <T>(key: LocalStorageKeys) => this.getItem<T>(key, getLocalStorage),\r\n clear: () => this.clearStorage(clearLocalStorage)\r\n };\r\n public static session = {\r\n set: (key: SessionStorageKeys, value: unknown) => this.setItem(key, value, setSessionStorage),\r\n get: <T>(key: SessionStorageKeys) => this.getItem<T>(key, getSessionStorage),\r\n clear: () => this.clearStorage(clearSessionStorage)\r\n };\r\n\r\n private static setItem(key: StorageEnum, value: unknown, set: (key: string, value: string) => void): void {\r\n if (!key) return;\r\n set(key as string, typeof value === \"string\" ? value : JSON.stringify(value));\r\n }\r\n\r\n private static getItem<T>(key: StorageEnum, get: (key: string) => string | null, withParsing = false): T | null {\r\n const data: string | null = get(key as string) ?? null;\r\n if (data) return withParsing ? JSON.parse(data) as T : data as T;\r\n return null;\r\n }\r\n\r\n private static clearStorage(clear: () => void): void {\r\n clear();\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LoaderService","i1.PermissionsService","i1.DetectDeviceService"],"mappings":";;;;;;;;;;;;AAAO,MAAM,QAAQ,GAAG;AACjB,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClC;AAAZ,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACjB,CAAC,EAHW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;MCCH,qBAAqB,CAAA;IACzC,YAAY,GAAG,CAAC;IAChB,UAAU,GAAG,CAAC;IACd,UAAU,GAAW,QAAQ;IAE7B,SAAS,GAAG,gBAAgB;IAC5B,gBAAgB,GAAG,WAAW;AAC9B,IAAA,oBAAoB,GAAG,aAAa,CAAC,IAAI;IACzC,KAAK,GAAuB,CAAC;AAE7B,IAAA,WAAW,GAAgB;AACzB,QAAA,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,IAAI,CAAC,UAAU;AAC1B,QAAA,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,IAAI,CAAC,oBAAoB;QACpC,MAAM,EAAE,IAAI,CAAC,gBAAgB;KAC9B;AAID,IAAA,gBAAgB,CAAC,OAAmC,EAAA;QAClD,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,GAAG,OAAO;SACX;IACH;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,UAAU;AAC1B,YAAA,IAAI,EAAE,CAAC;SACR;IACH;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;YACnB,SAAS,EAAE,IAAI,CAAC,UAAU;AAC1B,YAAA,IAAI,EAAE,CAAC;SACR;IACH;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,IAAI;SACtB;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAChC;AACD;;ICvDW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;IAKhB;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAAE,CAAC,EAArB,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;IAGlB;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AACjC,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;MCGjB,WAAW,GAAG,IAAI,cAAc,CAAa,YAAY;MASzD,eAAe,GAAG,IAAI,cAAc,CAAmB,gBAAgB;;ACI7E,MAAM,sBAAsB,GACjC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc;;ACrBvE,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,OAAqB,EAAE,GAAG,IAAc,KAAY;IAC9F,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE;IAEhD,IAAI,UAAU,EAAE;AACd,QAAA,OAAO,UAAU;IACnB;IAEA,IAAI,MAAM,GAAG,OAAO;AAEpB,IAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;IAChC;IAEA,IAAI,UAAU,EAAE;AACd,QAAA,MAAM,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;IAC5B;AAEA,IAAA,OAAO,MAAM;AACf;AAEO,MAAM,qBAAqB,GAAG,CAAC,OAAa,KAAI;IACrD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC3C,QAAA,OAAO,EAAE;IACX;;IAEA,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC,cAAmB,EAAE,GAAG,KAAI;AAChE,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1B,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;QAC7B;AAEA,QAAA,OAAO,cAAc;IACvB,CAAC,EAAE,EAAE,CAAC;AACR;AAEO,MAAM,WAAW,GAAG,CAAI,OAAqB,KAAK,GAAG,CAAC,CAAC,GAAM,MAAM,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAE7G,MAAM,gBAAgB,GAAG,CAAI,GAAwB,KAAK,GAAG,CAAC;;MCpC/C,eAAe,CAAA;AAClB,IAAA,IAAI,GAAe,MAAM,CAAC,UAAU,CAAC;AAEtD,IAAA,IAAI,GAAG,GAAA;QACL,MAAM,EAAE,MAAM,EAAC,eAAe,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AACtD,QAAA,OAAO,CAAA,EAAG,eAAe,CAAA,EAAG,MAAM,GAAG,CAAA,CAAA,EAAI,MAAM,EAAE,GAAG,EAAE,EAAE;IAC1D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AACvC,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;QAC3C,OAAO,WAAW,IAAI,gBAAgB;IACxC;IAIA,MAAM,CAAI,EAAmB,EAAE,OAAqB,EAAA;QAClD,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAE3D,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,GAAG,EAAE,cAAc;aAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD;AAEA,IAAA,MAAM,CAAI,OAAqB,EAAA;QAC7B,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;AAC/C,QAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAE3D,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,GAAG,EAAE,cAAc;aAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD;IAEA,GAAG,CAAI,IAAa,EAAE,OAAqB,EAAA;QACzC,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;QAC/C,MAAM,cAAc,GAAG,EAAE,GAAG,qBAAqB,CAAC,aAAa,CAAC,EAAE;QAElE,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,cAAc;aACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD;AAEA,IAAA,MAAM,CACJ,EAA+B,EAC/B,IAAa,EACb,OAAqB,EAAA;QAErB,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,EAAE,GAAE,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;QACzG,MAAM,cAAc,GAAG,EAAE,GAAG,qBAAqB,CAAC,aAAa,CAAC,EAAE;QAElE,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,cAAc;aAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD;IAEA,MAAM,CAAI,EAAmB,EAAE,OAAqB,EAAA;QAClD,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAE3D,OAAO,IAAI,CAAC;AACT,aAAA,MAAM,CAAI,GAAG,EAAE,cAAc;aAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACrD;AAEU,IAAA,eAAe,CAAC,MAA2B,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;IACpE;AAEU,IAAA,SAAS,CAAC,OAAqB,EAAA;AACvC,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACpC,YAAA,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;SACpC;AAED,QAAA,IACE,OAAO;aACN,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,EAC7D;YACA,OAAO,EAAE,KAAK,EAAE,CAAC,GAAY,KAAK,GAAG,EAAE;QACzC;AAEA,QAAA,IAAI,OAAO,IAAI,OAAO,EAAE,KAAK,EAAE;AAC7B,YAAA,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QACjC;AAEA,QAAA,MAAM,kBAAkB,GACtB,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;AAC5D,QAAA,OAAO,kBAAkB,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO;IACxE;AACD;;AC/FK,MAAO,WAAY,SAAQ,eAAe,CAAA;AAIH,IAAA,SAAA;AAHpC,IAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACpD,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAE/C,IAAA,WAAA,CAA2C,SAAqB,EAAA;AAC9D,QAAA,KAAK,EAAE;QADkC,IAAA,CAAA,SAAS,GAAT,SAAS;QAElD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9C;IACS,YAAY,GAAA;QACnB,OAAO;AACL,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,eAAe,EAAE,EAAE;SACpB;IACH;IAEA,kBAAkB,GAAA;AAChB,QAAA,MAAM,KAAK,GAAkB,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QACrF,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE;QAC7B;IACF;AAEA,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;IAC9B;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,aAAa,CAAC;IAC1E;AAEA,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;IACrE;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc;AAC/C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAU,EAAE,EAAE;AAC9B,YAAA,UAAU,EAAE,SAAS;AACtB,SAAA,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE;QACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC;AACnE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;IAChD;AArDW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAIF,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAJpB,IAAA,OAAA,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;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAKc,MAAM;2BAAC,WAAW;;;MCNpB,iBAAiB,CAAA;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1B,IAAA,YAAY;AAEnB,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,WAAW,EAAE;IACpB;IAEO,WAAW,GAAA;QAChB,MAAM,KAAK,GAAW,IAAI,CAAC,WAAW,CAAC,YAAY,EAAY;QAC/D,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;QACtC;IACF;uGAbW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPM,MAAM,eAAe,GAAG;AACxB,MAAM,eAAe,GAAG;AAC7B,IAAA,cAAc,EAAE,sBAAsB;AACtC,IAAA,gBAAgB,EAAE,wBAAwB;IAC1C,cAAc,EAAE,eAAe,GAAG,cAAc;IAChD,YAAY,EAAE,eAAe,GAAG,MAAM;IACtC,mBAAmB,EAAE,eAAe,GAAG;;;ACJlC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAU,MAAM,IAAI,EAAE;AACnE,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAU,MAAM,IAAI,EAAE;MAE3D,kBAAkB,CAAA;IAC7B,OAAO,aAAa,CAAC,cAAuB,EAAA;QAC1C,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAChE;IAEA,OAAO,YAAY,CAAC,cAAuB,EAAA;QACzC,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC;IAC9D;AACD;;MCFY,aAAa,CAAA;IACxB,UAAU,GAAG,IAAI,eAAe,CAAc,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtD,IAAA,UAAU,GAAyB,IAAI,GAAG,EAAmB;AAErE,IAAA,UAAU,CAAC,OAAgB,EAAE,cAAc,GAAG,IAAI,EAAE,GAAW,EAAA;QAC7D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC;QAC9F;QAEA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QACtD;AAAO,aAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7B;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACvC;IACF;uGAnBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,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;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCLY,gBAAgB,GAAG,IAAI,cAAc,CAAkB,kBAAkB;;MCHzE,iBAAiB,GAAG,IAAI,cAAc,CACjD,mBAAmB,EACnB;AACE,IAAA,OAAO,EAAE,MAAM,CAAC,KAAU,KAAI;AAC5B,QAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC;IACtD,CAAC;AACF,CAAA;;ICRS;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,SAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC/B,CAAC,EAHW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;MCyBR,mBAAmB,CAAA;AAMG,IAAA,SAAA;AAErB,IAAA,eAAA;AAEF,IAAA,eAAA;IATV,oBAAoB,GAAG,KAAK;IAC5B,eAAe,GAAmD,EAAE;AACpE,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAErC,IAAA,WAAA,CACiC,SAAqB,EAE1C,eAA4D,EAE9D,eAAgD,EAAA;QAJzB,IAAA,CAAA,SAAS,GAAT,SAAS;QAE9B,IAAA,CAAA,eAAe,GAAf,eAAe;QAEjB,IAAA,CAAA,eAAe,GAAf,eAAe;IACrB;IAEJ,SAAS,CACP,OAA6B,EAC7B,IAAiB,EAAA;AAEjB,QAAA,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAEvC,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACpE,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC;AAExE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9B,UAAU,CAAC,CAAC,GAAsB,KAAI;AACpC,YAAA,IAAI,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,KAAK,SAAS,CAAC,WAAW,EAAE;AAC3D,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACnD;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;gBAChC,IAAI,CAAC,IAAI,CAAC,eAAe;AAAE,oBAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;AACvD,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CACnC,SAAS,CAAC,CAAC,WAAoB,KAAI;oBACjC,IAAI,WAAW,EAAE;AACf,wBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;wBACjC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AACxC,wBAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,wBAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;4BACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACtB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CACtC;wBACH;oBACF;AACA,oBAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC9B,CAAC,CAAC,CACH;YACH;AACA,YAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,EACF,QAAQ,CAAC,MACP,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,CAC1E,CACF;IACH;AApDW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAMpB,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,gBAAgB,aAEhB,iBAAiB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAThB,mBAAmB,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAOI,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,gBAAgB;;0BAEvB,MAAM;2BAAC,iBAAiB;;;MC/BhB,0BAA0B,CAAA;;AAErC,IAAA,WAAW,CAAC,KAAwB,EAAA;AAClC,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB;AACA,QAAA,MAAM,KAAK;IACb;IAEA,SAAS,CAAC,OAA6B,EAAE,IAAiB,EAAA;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9B,KAAK,CAAC;AACJ,YAAA,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,IAAI,CAAC;AACb,SAAA,CAAC,CACH;IACH;AACD;;ACZK,MAAO,YAAa,SAAQ,eAAe,CAAA;IACtC,YAAY,GAAA;QACnB,OAAO;YACL,eAAe,EAAE,eAAe,CAAC,YAAY;AAC7C,YAAA,MAAM,EAAE;SACT;IACH;AAEA,IAAA,eAAe,CAAI,KAAa,EAAA;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAI;AACpB,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;IACJ;uGAZW,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCCY,mBAAmB,CAAA;AAEpB,IAAA,QAAA;AACA,IAAA,gBAAA;IAFV,WAAA,CACU,QAAkB,EAClB,gBAAkC,EAAA;QADlC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IACvB;AAEH,IAAA,IAAY,cAAc,GAAA;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAmB,eAAe,CAAC;IAC7D;AAEA,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC;QAC1C,IAAI,KAAK,YAAY,KAAK,IAAI,EAAE,KAAK,YAAY,iBAAiB,CAAC,EAAE;AACnE,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACpB;QACF;AAEA,QAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACtC,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;AAEnC,YAAA,QAAQ,KAAK,EAAE,MAAM;AACnB,gBAAA,KAAK,GAAG;AACL,oBAAA,IAAI,CAAC,SAAS,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA,CAAE,CAAC;oBACvD;AACH,gBAAA,KAAK,GAAG;;AAEN,oBAAA,IAAI,CAAC,SAAS,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA,CAAE,CAAC;oBAChE;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,IAAI,CAAC,SAAS,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA,CAAE,CAAC;oBAChE;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;oBACnC;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC;oBACzC;AACF,gBAAA;AACE,oBAAA,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC;oBACzC;;QAEN;IACF;AAEQ,IAAA,SAAS,CAAC,UAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,MAAA,EAAS,UAAU,CAAA,CAAE,CAAC;AAC9D,SAAA,CAAC;IACJ;uGAjDW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCCY,kBAAkB,CAAA;AACrB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,IAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;AAClD,IAAA,gBAAgB,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAiB,GAAG,EAAE;AAC/E,IAAA,wBAAwB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;AACpE,IAAA,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;AAEzD,IAAA,UAAU,CAAC,MAAc,EAAA;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9D;AAEA,IAAA,aAAa,CAAC,MAAc,EAAA;QAC1B,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7B;IAEA,sBAAsB,CAAC,GAAwB,EAAE,cAAyB,EAAA;AACxE,QAAA,MAAM,iBAAiB,GAAG,cAAc,IAAI,IAAI,CAAC,gBAAgB;QACjE,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC;AACnD,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO;AACJ,aAAA,MAAM,CAAC,CAAC,CAAC,KAAI;YACZ,OAAO,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACnC,QAAA,CAAC;AACA,aAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9B,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,qBAAqB,CAAC,GAAwB,EAAE,MAA0B,EAAE,cAAyB,EAAA;QACnG,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IACnF;IAEA,wBAAwB,CAAC,GAAwB,EAAE,MAA0B,EAAA;QAC3E,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IAChG;IAEA,iBAAiB,CAAC,GAAwB,EAAE,MAA0B,EAAA;QACrE,IAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAC;AACzC,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5E;AACA,QAAA,OAAO,IAAI;IACb;IAEA,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IACxC;AAEA,IAAA,oBAAoB,CAAC,WAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC;IACjD;IAEA,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE;IACjD;uGAxDW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCAY,mBAAmB,CAAA;AAC9B,IAAA,YAAY,GAAW,MAAM,CAAC,UAAU;AAChC,IAAA,OAAO,GAAoB,IAAI,OAAO,EAAE;AACxC,IAAA,MAAM;AACd,IAAA,WAAA,GAAA;AACE,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;aACvB,IAAI,CAAC,oBAAoB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC;AAC9C,aAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpD;AAEQ,IAAA,aAAa,CAAC,KAAU,EAAA;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU;IAC7C;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CACrC,YAAY,CAAC,GAAG,CAAC;AACjB,QAAA,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;QAC5B,oBAAoB,EAAE;QACtB,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAC1B;IACH;AAEA,IAAA,IAAI,KAAK,GAAA;;AAEP,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM;QACpB;QAEA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;AAChD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAM;AAEpB,QAAA,OAAO,KAAM;IACf;IAEQ,OAAO,GAAA;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;QAE1F,QAAQ,IAAI;YACV,KAAK,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACvC;YACF,KAAK,IAAI,CAAC,KAAK,EAAE;AACf,gBAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;gBACnC;YACF,KAAK,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACvC;AACF,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC;;IAErC;IAEO,QAAQ,GAAA;;AAEb,QAAA,OAAO,KAAK;IACd;IAEO,SAAS,GAAA;AACd,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK;IACpB;IAEO,KAAK,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5H;IAEO,SAAS,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IACzE;uGAvEW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,cAAc,CAAA;AACjB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAE7C,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO;YACL,GAAG,EAAE,CAAC,GAAuB,EAAE,KAAa,EAAE,OAAgB,KAC5D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;AAC7C,YAAA,GAAG,EAAE,CAAC,GAAuB,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7D,YAAA,KAAK,EAAE,CAAC,GAAuB,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;SACnE;IACH;AAEO,IAAA,KAAK,GAAG;QACb,GAAG,EAAE,CAAC,GAAqB,EAAE,KAAc,KACzC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,GAAG,EAAE,CAAI,GAAqB,KAC5B,IAAI,CAAC,OAAO,CAAI,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/D,QAAA,KAAK,EAAE,MAAM,YAAY,CAAC,KAAK,EAAE;KAClC;AAEM,IAAA,OAAO,GAAG;QACf,GAAG,EAAE,CAAC,GAAuB,EAAE,KAAc,KAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvE,GAAG,EAAE,CAAI,GAAuB,KAC9B,IAAI,CAAC,OAAO,CAAI,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnE,QAAA,KAAK,EAAE,MAAM,cAAc,CAAC,KAAK,EAAE;KACpC;AAEO,IAAA,OAAO,CACb,GAAgB,EAChB,KAAc,EACd,KAAqC,EAAA;AAErC,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,KAAK,CAAC,GAAa,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjF;AAEQ,IAAA,OAAO,CACb,GAAgB,EAChB,KAAmC,EACnC,WAAW,GAAG,KAAK,EAAA;QAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAa,CAAC,IAAI,IAAI;QACzC,IAAI,IAAI,EAAE;AACR,YAAA,OAAO,WAAW,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAO,GAAI,IAAqB;QACvE;AACA,QAAA,OAAO,IAAI;IACb;uGA/CW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCGrB,qBAAqB,CAAA;AAEb,IAAA,aAAA;AADV,IAAA,KAAK;AACd,IAAA,WAAA,CAAmB,aAA4B,EAAA;QAA5B,IAAA,CAAA,aAAa,GAAb,aAAa;IAAkB;uGAFvC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,qGCZlC,yYASA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCuB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAlB,SAAS,yCAAW,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAEhC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,eAAe,EAAA,UAAA,EAGb,IAAI,EAAA,OAAA,EACP,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,yYAAA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA;+EAGnC,KAAK,EAAA,CAAA;sBAAb;;;AERI,MAAM,SAAS,GAAkB,MAAK;AAC3C,IAAA,MAAM,SAAS,GAAG,MAAM,CAAa,WAAW,CAAC;AACjD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEvC,IAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE;QAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ;AACzC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;;ACVO,MAAM,gBAAgB,GAAkB,CAAC,KAAK,KAAI;AACvD,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAyB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;IAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE;AAClH,QAAA,OAAO,IAAI;IACb;SAAO;AACL,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;AAC9B,QAAA,OAAO,KAAK;IACd;AACF;;IChBY;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,mBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,8BAAA,CAAA,GAAA,8BAA6D;AAC7D,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,mBAAA,CAAA,0BAAA,CAAA,GAAA,0BAAqD;AACrD,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EApBW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;IAsBnB;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAbW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;ICtBlB;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,gBAAA,CAAA,GAAA,uBAAwC;AACxC,IAAA,aAAA,CAAA,gBAAA,CAAA,GAAA,0BAA2C;AAC3C,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,0BAAqC;AACrC,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,YAAuB;AACvB,IAAA,aAAA,CAAA,gBAAA,CAAA,GAAA,wBAAyC;AACzC,IAAA,aAAA,CAAA,cAAA,CAAA,GAAA,kBAAiC;AACjC,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,SAAkB;AAClB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,QAAgB;AAChB,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,aAAA,CAAA,gBAAA,CAAA,GAAA,MAAuB;AACzB,CAAC,EAfW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;ICAb;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC5B,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;ICAhB;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACX,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;IAKR;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAHW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;MCWX,uBAAuB,CAAA;AAUxB,IAAA,kBAAA;AACA,IAAA,aAAA;AACA,IAAA,WAAA;AAXF,IAAA,QAAQ;AACR,IAAA,IAAI;AACJ,IAAA,eAAe;AACf,IAAA,SAAS;IAET,aAAa,GAAG,KAAK;AACrB,IAAA,YAAY;AAEpB,IAAA,WAAA,CACU,kBAAsC,EACtC,aAA+B,EAC/B,WAAiC,EAAA;QAFjC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,WAAW,GAAX,WAAW;IAClB;AAEH;;;AAGG;IAEH,IAA+B,cAAc,CAAC,OAAiB,EAAA;QAC7D,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;YACvB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,IAA+B,iBAAiB,CAAC,GAAW,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG;YACf,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,IAAa,4BAA4B,CAAC,cAAwB,EAAA;QAChE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,eAAe,GAAG,cAAc;YACrC,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,IAAa,sBAAsB,CAAC,QAAiB,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;YACzB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;YACnB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;IAClC;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAExE,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B;AAAO,aAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;YACzC,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEQ,IAAA,aAAa,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CACrD,IAAI,CAAC,IAA2B,EAChC,MAA4B,CAC7B;QACH;AAEA,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAClD,IAAI,CAAC,IAA2B,EAChC,MAA4B,EAC5B,IAAI,CAAC,eAAe,CACrB;IACH;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC5B;IAEQ,aAAa,CAAC,CAAY,EAAE,CAAY,EAAA;QAC9C,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;AACzB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AACtC,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC;uGAhGW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;6IAqBgC,cAAc,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAOM,iBAAiB,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAOZ,4BAA4B,EAAA,CAAA;sBAAxC;gBAOY,sBAAsB,EAAA,CAAA;sBAAlC;;;ACpDH;;;;AAIK;MAMQ,0BAA0B,CAAA;AAO3B,IAAA,WAAA;AACA,IAAA,aAAA;AACA,IAAA,0BAAA;AARkB,IAAA,UAAU;AAE9B,IAAA,kBAAkB,GAAiB,IAAI,YAAY,EAAE;AAE7D,IAAA,WAAA;;IAEU,WAA6B,EAC7B,aAA+B,EAC/B,0BAA+C,EAAA;QAF/C,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,0BAA0B,GAA1B,0BAA0B;IACjC;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9G;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACvC;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,aAAa,GACjB,CAAC,IAAI,CAAC,UAAU,KAAK,gBAAgB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE;AAC7F,aAAC,IAAI,CAAC,UAAU,KAAK,gBAAgB,CAAC,WAAW,IAAI,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC;QAClG,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;QAC5F;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC5B;IACF;uGA7BW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACb,iBAAA;8IAE6B,UAAU,EAAA,CAAA;sBAArC,KAAK;uBAAC,mBAAmB;;;ACZ5B,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,KAAa,KAAK,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AACxF,MAAM,eAAe,GAAG,CAAC,GAAW,KAAK,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClE,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE;AACpD,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAa,KAAK,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAC5F,MAAM,iBAAiB,GAAG,CAAC,GAAW,KAAK,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AACtE,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;MAE3C,cAAc,CAAA;IACjB,OAAO,aAAa;IAErB,OAAO,IAAI,CAAC,aAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;IACpC;AAEO,IAAA,WAAW,OAAO,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF;QACH;QAEA,OAAO;YACL,GAAG,EAAE,CAAC,GAAuB,EAAE,KAAa,EAAE,OAAgB,KAC5D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;AAC7C,YAAA,GAAG,EAAE,CAAC,GAAuB,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7D,YAAA,KAAK,EAAE,CAAC,GAAuB,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG;SAClE;IACH;IAEO,OAAO,KAAK,GAAG;AACpB,QAAA,GAAG,EAAE,CAAC,GAAqB,EAAE,KAAc,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC;AACzF,QAAA,GAAG,EAAE,CAAI,GAAqB,KAAK,IAAI,CAAC,OAAO,CAAI,GAAG,EAAE,eAAe,CAAC;QACxE,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB;KACjD;IACM,OAAO,OAAO,GAAG;AACtB,QAAA,GAAG,EAAE,CAAC,GAAuB,EAAE,KAAc,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC;AAC7F,QAAA,GAAG,EAAE,CAAI,GAAuB,KAAK,IAAI,CAAC,OAAO,CAAI,GAAG,EAAE,iBAAiB,CAAC;QAC5E,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB;KACnD;AAEO,IAAA,OAAO,OAAO,CAAC,GAAgB,EAAE,KAAc,EAAE,GAAyC,EAAA;AAChG,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,GAAG,CAAC,GAAa,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/E;IAEQ,OAAO,OAAO,CAAI,GAAgB,EAAE,GAAmC,EAAE,WAAW,GAAG,KAAK,EAAA;QAClG,MAAM,IAAI,GAAkB,GAAG,CAAC,GAAa,CAAC,IAAI,IAAI;AACtD,QAAA,IAAI,IAAI;AAAE,YAAA,OAAO,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,GAAG,IAAS;AAChE,QAAA,OAAO,IAAI;IACb;IAEQ,OAAO,YAAY,CAAC,KAAiB,EAAA;AAC3C,QAAA,KAAK,EAAE;IACT;;;ACzDF;;AAEG;;;;"}
package/index.d.ts CHANGED
@@ -243,6 +243,7 @@ declare abstract class BaseHttpService {
243
243
  declare class AuthService extends BaseHttpService {
244
244
  protected appConfig: CoreConfig;
245
245
  isUserLoggedIn$: BehaviorSubject<boolean>;
246
+ private storageService;
246
247
  constructor(appConfig: CoreConfig);
247
248
  setApiConfig(): HttpConfig;
248
249
  initAuthentication(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corp-products/app-core",
3
- "version": "3.2.3",
3
+ "version": "3.2.5",
4
4
  "author": "shireen Omar",
5
5
  "description": "shared core services across our apps",
6
6
  "peerDependencies": {