@haloduck/core 2.0.9 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,18 +9,24 @@ npm install @haloduck/core
9
9
  ```
10
10
 
11
11
  ## Post Installation
12
+
12
13
  ### Copy scripts
14
+
13
15
  Copy script files to `scripts` folder in the root folder.
16
+
14
17
  ```bash
15
18
  npx haloduck-copy-scripts
16
19
  ```
20
+
17
21
  ### Update `package.json`
22
+
18
23
  ```bash
19
24
  "scripts": {
20
25
  ...
21
26
  "prebuild": "ts-node scripts/generate-build-timestamp.ts"
22
27
  }
23
28
  ```
29
+
24
30
  ## Key Features
25
31
 
26
32
  - **Authentication Service**: AWS Amplify-based authentication management
@@ -45,9 +51,7 @@ Amplify.configure({
45
51
  export const appConfig: ApplicationConfig = {
46
52
  providers: [
47
53
  // ...
48
- provideHttpClient(
49
- withInterceptors([idTokenInterceptor, dummyMemberIdInterceptor]),
50
- ),
54
+ provideHttpClient(withInterceptors([idTokenInterceptor, dummyMemberIdInterceptor])),
51
55
  // ...
52
56
  provideStore({
53
57
  global: globalReducer,
@@ -60,7 +64,7 @@ export const appConfig: ApplicationConfig = {
60
64
  syntax: false,
61
65
  },
62
66
  }),
63
- // ...
67
+ // ...
64
68
  provideServiceWorker('ngsw-worker.js', {
65
69
  enabled: environment.usePwa,
66
70
  registrationStrategy: 'registerWhenStable:30000',
@@ -97,7 +101,6 @@ export const appConfig: ApplicationConfig = {
97
101
  /// ...
98
102
  ],
99
103
  };
100
-
101
104
  ```
102
105
 
103
106
  ## Dependencies
@@ -113,4 +116,5 @@ MIT License
113
116
 
114
117
  ## Support
115
118
 
116
- If you have any issues or questions, please register them in [GitHub Issues](https://github.com/haloduck/haloduck-frontend/issues)
119
+ If you have any issues or questions, please register them in
120
+ [GitHub Issues](https://github.com/haloduck/haloduck-frontend/issues)
@@ -74,15 +74,11 @@ var GlobalSelectors;
74
74
  let [_resource, _conditionsRaw] = resource.split(':');
75
75
  const _conditions = _conditionsRaw ? _conditionsRaw.split('|') : [];
76
76
  _resource =
77
- shouldStripTag && _resource.includes('/')
78
- ? _resource.split('/')[0]
79
- : _resource;
77
+ shouldStripTag && _resource.includes('/') ? _resource.split('/')[0] : _resource;
80
78
  const _resourceAclArray = acl[aclKey][_action];
81
79
  return _resourceAclArray.some((_resourceAclRaw) => {
82
80
  const [_resourceAcl, _conditionsAclRaw] = _resourceAclRaw.split(':');
83
- const _conditionsAcl = _conditionsAclRaw
84
- ? _conditionsAclRaw.split('|')
85
- : [];
81
+ const _conditionsAcl = _conditionsAclRaw ? _conditionsAclRaw.split('|') : [];
86
82
  if (_resourceAcl === '*') {
87
83
  return true;
88
84
  }
@@ -112,8 +108,7 @@ const groupIdInterceptor = (req, next) => {
112
108
  return next(req);
113
109
  if (req.url.endsWith('/acl'))
114
110
  return next(req);
115
- if (req.url.startsWith('https://api') ||
116
- req.url.startsWith('http://localhost')) {
111
+ if (req.url.startsWith('https://api') || req.url.startsWith('http://localhost')) {
117
112
  return groupId$.pipe(switchMap((groupId) => {
118
113
  if (groupId) {
119
114
  const clonedRequest = req.clone({
@@ -196,8 +191,7 @@ class DisplayNamePipe {
196
191
  transform(member) {
197
192
  if (!member)
198
193
  return '';
199
- return (member.nickname?.trim() ||
200
- (member.firstName || '') + ' ' + (member.lastName || ''));
194
+ return member.nickname?.trim() || member.fullName || '' || (member.email || '').split('@')[0];
201
195
  }
202
196
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DisplayNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
203
197
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: DisplayNamePipe, isStandalone: true, name: "displayName" });
@@ -254,10 +248,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
254
248
  }] });
255
249
 
256
250
  const defaultLanguage = { id: 'en', value: 'English' };
257
- const supportedLanguages = [
258
- defaultLanguage,
259
- { id: 'ko', value: '한국어' },
260
- ];
251
+ const supportedLanguages = [defaultLanguage, { id: 'ko', value: '한국어' }];
261
252
  const HALODUCK_CORE_CONFIG = new InjectionToken('HALODUCK_CORE_CONFIG', {
262
253
  providedIn: 'root',
263
254
  factory: () => ({
@@ -275,7 +266,7 @@ const HALODUCK_CORE_CONFIG = new InjectionToken('HALODUCK_CORE_CONFIG', {
275
266
  googleApiKey: 'please-register-google-api-key-via-provideHaloduckCoreConfig',
276
267
  defaultLngLat: {
277
268
  lat: 37.575971,
278
- lng: 126.976800,
269
+ lng: 126.9768,
279
270
  },
280
271
  },
281
272
  }),
@@ -434,9 +425,7 @@ class GlobalApiService {
434
425
  return this.http.get(`${this.apiUrl}/acl`).pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)));
435
426
  }
436
427
  getListMenuItem() {
437
- return this.http
438
- .get(`${this.apiUrl}/menu`)
439
- .pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)));
428
+ return this.http.get(`${this.apiUrl}/menu`).pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)));
440
429
  }
441
430
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: GlobalApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
442
431
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: GlobalApiService, providedIn: 'root' });
@@ -467,9 +456,7 @@ class MemberApiService extends BaseEntityApiService {
467
456
  return 'member';
468
457
  }
469
458
  getProfile() {
470
- return this.http
471
- .get(`${this.apiUrl}/${this.getEntityName()}/me`)
472
- .pipe(map$1((response) => responseHandler(response)), catchError$1((error) => errorHandler(error)));
459
+ return this.http.get(`${this.apiUrl}/${this.getEntityName()}/me`).pipe(map$1((response) => responseHandler(response)), catchError$1((error) => errorHandler(error)));
473
460
  }
474
461
  checkMemberByEmail(email) {
475
462
  return this.http
@@ -539,15 +526,10 @@ class TableStore extends ComponentStore {
539
526
  // effects
540
527
  loadListEntity = this.effect((trigger$) => trigger$.pipe(withLatestFrom(this.listEntity$, this.filter$, this.sort$, this.page$, this.parent$), switchMap(([, listEntity, filter, sort, page, parent]) => {
541
528
  this.updateStatus(ITableStateStatusLoading);
542
- return this.apiService
543
- .getListEntity({ filter, sort, page }, parent)
544
- .pipe(tap((response) => {
529
+ return this.apiService.getListEntity({ filter, sort, page }, parent).pipe(tap((response) => {
545
530
  this.patchState({
546
- listEntity: [
547
- ...listEntity,
548
- ...(response.data ? response.data : []),
549
- ],
550
- totalCount: listEntity.length === 0 ? response.total : (this.get()?.totalCount),
531
+ listEntity: [...listEntity, ...(response.data ? response.data : [])],
532
+ totalCount: listEntity.length === 0 ? response.total : this.get()?.totalCount,
551
533
  currentCount: listEntity.length + (response.data ? response.data.length : 0),
552
534
  lastEvaluatedKey: response.lastEvaluatedKey,
553
535
  });
@@ -594,10 +576,7 @@ class TableStore extends ComponentStore {
594
576
  }
595
577
  return updatedListEntity;
596
578
  }
597
- return [
598
- ...(response.data ? [response.data] : []),
599
- ...listEntity,
600
- ];
579
+ return [...(response.data ? [response.data] : []), ...listEntity];
601
580
  })(),
602
581
  });
603
582
  this.updateStatus(ITableStateStatusCreated);
@@ -617,7 +596,9 @@ class TableStore extends ComponentStore {
617
596
  return {
618
597
  ...entity,
619
598
  children: [
620
- ...(entity.children ? [response.data, ...entity.children] : [response.data]),
599
+ ...(entity.children
600
+ ? [response.data, ...entity.children]
601
+ : [response.data]),
621
602
  ],
622
603
  };
623
604
  }
@@ -631,7 +612,9 @@ class TableStore extends ComponentStore {
631
612
  ? {
632
613
  ...child,
633
614
  children: [
634
- ...(child.children ? [response.data, ...child.children] : [response.data]),
615
+ ...(child.children
616
+ ? [response.data, ...child.children]
617
+ : [response.data]),
635
618
  ],
636
619
  }
637
620
  : child),
@@ -639,7 +622,7 @@ class TableStore extends ComponentStore {
639
622
  }
640
623
  return updatedListEntity;
641
624
  }
642
- return listEntity.map((e) => e.id === response.data.id ? response.data : e);
625
+ return listEntity.map((e) => (e.id === response.data.id ? response.data : e));
643
626
  })(),
644
627
  });
645
628
  this.updateStatus(ITableStateStatusLoaded);
@@ -670,16 +653,14 @@ class TableStore extends ComponentStore {
670
653
  children: entity.children?.map((child) => child.id === response.data.parentId
671
654
  ? {
672
655
  ...child,
673
- children: child.children?.map((grandChild) => grandChild.id === response.data.id
674
- ? response.data
675
- : grandChild),
656
+ children: child.children?.map((grandChild) => grandChild.id === response.data.id ? response.data : grandChild),
676
657
  }
677
658
  : child),
678
659
  }));
679
660
  }
680
661
  return updatedListEntity;
681
662
  }
682
- return listEntity.map((e) => e.id === response.data.id ? response.data : e);
663
+ return listEntity.map((e) => (e.id === response.data.id ? response.data : e));
683
664
  })(),
684
665
  });
685
666
  this.updateStatus(ITableStateStatusUpdated);
@@ -1 +1 @@
1
- {"version":3,"file":"haloduck-core.mjs","sources":["../../../../projects/haloduck/core/src/lib/guard/auth.guard.ts","../../../../projects/haloduck/core/src/lib/interceptor/dummy-member-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/store/global/global.selectors.ts","../../../../projects/haloduck/core/src/lib/interceptor/group-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/interceptor/id-token.interceptor.ts","../../../../projects/haloduck/core/src/lib/model/api-param.model.ts","../../../../projects/haloduck/core/src/lib/model/api-response.model.ts","../../../../projects/haloduck/core/src/lib/pipe/display-name.pipe.ts","../../../../projects/haloduck/core/src/lib/store/global/global.actions.ts","../../../../projects/haloduck/core/src/lib/service/auth.service.ts","../../../../projects/haloduck/core/src/lib/provider/config.provider.ts","../../../../projects/haloduck/core/src/lib/service/base-entity-api.service.ts","../../../../projects/haloduck/core/src/lib/service/cdn.service.ts","../../../../projects/haloduck/core/src/lib/service/global-api.service.ts","../../../../projects/haloduck/core/src/lib/service/group-api.service.ts","../../../../projects/haloduck/core/src/lib/service/member-api.service.ts","../../../../projects/haloduck/core/src/lib/service/device-api.service.ts","../../../../projects/haloduck/core/src/lib/store/component/table.store.ts","../../../../projects/haloduck/core/src/lib/store/component/group.store.ts","../../../../projects/haloduck/core/src/lib/store/component/member.store.ts","../../../../projects/haloduck/core/src/lib/store/component/device.store.ts","../../../../projects/haloduck/core/src/lib/store/global/global.effects.ts","../../../../projects/haloduck/core/src/lib/store/global/global.state.ts","../../../../projects/haloduck/core/src/lib/store/global/global.reducer.ts","../../../../projects/haloduck/core/src/public-api.ts","../../../../projects/haloduck/core/src/haloduck-core.ts"],"sourcesContent":["import { CanActivateFn, Router } from '@angular/router';\nimport { from, map, of, switchMap, take } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const authGuard: CanActivateFn = (route, state) => {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n return of(true);\n }\n\n window.location.href = '/authenticate';\n return of(false);\n })\n );\n};\n","import {\n HttpRequest,\n HttpEvent,\n HttpInterceptorFn,\n HttpHandlerFn,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// deprecated\nexport const dummyMemberIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const dummyMemberId = localStorage.getItem('dummyMemberId');\n\n if (req.url.startsWith('http://localhost')) {\n if (dummyMemberId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Dummy-Member-Id': dummyMemberId || '',\n },\n });\n\n return next(clonedRequest);\n }\n }\n\n return next(req);\n};\n","import { createSelector, createFeatureSelector } from '@ngrx/store';\nimport { GlobalStateEx } from './global.state';\n\nexport namespace GlobalSelectors {\n export const selectGlobalState = createFeatureSelector<GlobalStateEx>('global');\n\n export const isInitiated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.initiated,\n );\n\n export const selectIsAuthenticated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isAuthenticated\n );\n\n export const selectProfile = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.profile\n );\n\n export const selectIsLoading = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.loadingReference > 0,\n );\n\n export const selectAcl = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.acl,\n );\n\n export const selectListMenuItem = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.listMenuItem,\n );\n\n export const selectIsSideMenuOpen = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isSideMenuOpen,\n );\n\n export const selectLanguage = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.language,\n );\n\n export const canActivate = (\n resource: string,\n action: string,\n shouldStripTag?: boolean,\n ) =>\n createSelector(selectAcl, (acl) => {\n const allowedActions: string[] = [];\n\n switch (action) {\n case 'delete':\n allowedActions.push('delete');\n break;\n case 'create':\n allowedActions.push('delete');\n allowedActions.push('create');\n break;\n case 'update':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n break;\n case 'read':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n allowedActions.push('read');\n }\n\n const result = Object.keys(acl).some((aclKey) => {\n return ['delete', 'create', 'update', 'read'].some((_action) => {\n if (undefined === acl[aclKey][_action]) {\n return false;\n }\n\n let [_resource, _conditionsRaw] = resource.split(':');\n const _conditions = _conditionsRaw ? _conditionsRaw.split('|') : [];\n\n _resource =\n shouldStripTag && _resource.includes('/')\n ? _resource.split('/')[0]\n : _resource;\n\n const _resourceAclArray = acl[aclKey][_action];\n\n return _resourceAclArray.some((_resourceAclRaw: string) => {\n const [_resourceAcl, _conditionsAclRaw] =\n _resourceAclRaw.split(':');\n const _conditionsAcl = _conditionsAclRaw\n ? _conditionsAclRaw.split('|')\n : [];\n\n if (_resourceAcl === '*') {\n return true;\n }\n\n if (\n _resource === _resourceAcl &&\n allowedActions.includes(_action) &&\n (_conditions.length === 0 ||\n _conditionsAcl.some((_condition) =>\n _conditions.includes(_condition),\n ))\n ) {\n return true;\n }\n\n return false;\n });\n });\n });\n\n return result;\n });\n\n export const selectCurrentGroupId = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup?.id,\n );\n\n export const selectCurrentGroup = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup,\n );\n}\n","import { inject } from '@angular/core';\nimport {\n HttpRequest,\n HttpEvent,\n HttpInterceptorFn,\n HttpHandlerFn,\n} from '@angular/common/http';\nimport { Observable, switchMap, take } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalStateEx } from '../store/global/global.state';\n\n// deprecated\nexport const groupIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const store = inject(Store<GlobalStateEx>);\n const groupId$ = store.select(GlobalSelectors.selectCurrentGroupId);\n\n if (req.url.endsWith('/member/me')) return next(req);\n if (req.url.endsWith('/menu')) return next(req);\n if (req.url.endsWith('/acl')) return next(req);\n\n if (\n req.url.startsWith('https://api') ||\n req.url.startsWith('http://localhost')\n ) {\n return groupId$.pipe(\n switchMap((groupId) => {\n if (groupId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Group-Id': groupId || '',\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n }\n\n return next(req);\n};\n","import {\n HttpRequest,\n HttpEvent,\n HttpInterceptorFn,\n HttpHandlerFn,\n} from '@angular/common/http';\nimport { from, Observable, of, switchMap } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const idTokenInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n if (req.url.endsWith('/oauth2/token')) return next(req);\n\n if (req.url.startsWith('https://api')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.idToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n })\n );\n } else if (req.url.startsWith('https://auth') || req.url.startsWith('https://eleven-auth')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.accessToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.accessToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n })\n );\n }\n\n return next(req);\n};\n","export namespace SearchParams {\n export interface IData {\n filter: Filter;\n sort: Sort[];\n page?: Page;\n }\n\n export interface Filter {\n [key: string]: any;\n }\n\n export const SortDirectionAsc = 'asc';\n export const SortDirectionDesc = 'desc'; \n export type SortDirection = typeof SortDirectionAsc | typeof SortDirectionDesc | undefined;\n\n export interface Sort {\n field: string | string[];\n direction: SortDirection\n }\n\n export interface Page{\n limit: number;\n searchAfter?: any;\n }\n\n // export interface OrderAndPage{\n // size: number;\n // sort: Order[];\n // searchAfter?: any[];\n // }\n}","import { isDevMode } from '@angular/core';\nimport { Acl } from './acl.model';\nimport { MenuItem } from './menu-item.model';\nimport { Observable } from 'rxjs';\n\nexport interface ApiResponse {\n error: string;\n message?: string;\n data?: Acl | MenuItem[] | any;\n lastEvaluatedKey?: any;\n total?: number;\n}\n\nexport interface ApiError {\n error: string;\n message?: string;\n}\n\nexport function responseHandler(response: ApiResponse): ApiResponse {\n if (!response) {\n errorHandler({\n error: 'empty response',\n message: 'empty response',\n } as ApiError);\n }\n\n if (response.error != '00') {\n errorHandler({\n error: response.error,\n message: response.message,\n } as ApiError);\n }\n\n return response;\n}\n\nexport function errorHandler(err: ApiError): Observable<never> {\n isDevMode() && console.error('API Error: ', err);\n throw err;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Member } from '../store/component/member.store';\n\n@Pipe({\n name: 'displayName',\n})\nexport class DisplayNamePipe implements PipeTransform {\n transform(member: Member.IData | null | undefined): string {\n if (!member) return '';\n return (\n member.nickname?.trim() ||\n (member.firstName || '') + ' ' + (member.lastName || '')\n );\n }\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Member } from '../../store/component/member.store';\nimport { Group } from '../../store//component/group.store';\n\nexport namespace GlobalActions {\n export const markInitiated = createAction(\n '[Global] Mark Initiated',\n props<{ initiated: boolean }>(),\n );\n\n export const clearAuthentication = createAction(\n '[Global] Clear Authentication',\n );\n\n export const setAuthenticated = createAction(\n '[Global] Set Authenticated',\n props<{ isAuthenticated: boolean }>(),\n );\n\n export const setProfile = createAction(\n '[Global] Set Profile',\n props<{ profile: Member.IData & { [key: string]: any } }>(),\n );\n\n export const increaseLoadingReference = createAction(\n '[Global] Increase Loading Reference',\n );\n\n export const decreaseLoadingReference = createAction(\n '[Global] Decrease Loading Reference',\n );\n\n export const setAcl = createAction('[Global] Set Acl', props<{ acl: Acl }>());\n\n export const setListMenuItem = createAction(\n '[Global] Set List Menu Item',\n props<{ listMenuItem: MenuItem[] }>(),\n );\n\n export const toggleSideMenu = createAction('[Global] Toggle Side Menu');\n\n export const closeSideMenu = createAction('[Global] Close Side Menu');\n\n export const setLanguage = createAction(\n '[Global] Set Language',\n props<{ language: string }>(),\n );\n\n export const setCurrentGroup = createAction(\n '[Global] Set Current Group',\n props<{ group: Group.IData & { [key: string]: any } }>(),\n );\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { distinctUntilChanged, Observable, tap } from 'rxjs';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalState } from '../store/global/global.state';\nimport { Member } from '../store/component/member.store';\nimport { Group } from '../store/component/group.store';\nimport { GlobalActions } from '../store/global/global.actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService<TM extends Member.IData, TG extends Group.IData> {\n private readonly globalStore = inject(Store<GlobalState<TM, TG>>);\n\n canActivate(\n resource: string,\n action: string,\n shouldStripTag?: boolean,\n ): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.canActivate(resource, action, shouldStripTag))\n .pipe(distinctUntilChanged());\n }\n\n getProfile(): Observable<TM | undefined> {\n return this.globalStore.select(\n GlobalSelectors.selectProfile,\n ) as Observable<TM>;\n }\n\n setProfile(profile: TM): void {\n return this.globalStore.dispatch(GlobalActions.setProfile({ profile }));\n }\n\n isAuthenticated(): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.selectIsAuthenticated)\n .pipe(distinctUntilChanged());\n }\n}\n","import { inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { LngLat } from '../model/map.model';\n\nexport const defaultLanguage = { id: 'en', value: 'English' };\nexport const supportedLanguages = [\n defaultLanguage,\n { id: 'ko', value: '한국어' },\n];\n\nexport interface HaloduckCoreConfig {\n stage: string;\n appName: string;\n defaultLanguage: string;\n dateFormat: {\n long: string;\n short: string;\n };\n apiUrl: string;\n cdnUrl: string;\n map: {\n googleApiKey: string;\n mapId: string;\n defaultLngLat: LngLat;\n };\n}\n\nexport const HALODUCK_CORE_CONFIG = new InjectionToken<HaloduckCoreConfig>(\n 'HALODUCK_CORE_CONFIG',\n {\n providedIn: 'root',\n factory: () => ({\n stage: 'local',\n appName: 'please-register-app-name-via-provideHaloduckCoreConfig',\n defaultLanguage: defaultLanguage.id,\n dateFormat: {\n long: 'yyyy-MM-dd',\n short: 'yyMMdd',\n },\n apiUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n cdnUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n map: {\n mapId: 'please-register-map-id-via-provideHaloduckCoreConfig',\n googleApiKey:\n 'please-register-google-api-key-via-provideHaloduckCoreConfig',\n defaultLngLat: {\n lat: 37.575971,\n lng: 126.976800,\n },\n },\n }),\n },\n);\n\nexport function provideHaloduckCoreConfig(\n config: HaloduckCoreConfig,\n): Provider {\n return {\n provide: HALODUCK_CORE_CONFIG,\n useValue: config,\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreService {\n private config = inject(HALODUCK_CORE_CONFIG);\n\n constructor() {}\n getStage(): string {\n return this.config.stage;\n }\n getAppName(): string {\n return this.config.appName;\n }\n getDefaultLanguage(): string {\n return this.config.defaultLanguage;\n }\n getApiUrl(): string {\n return this.config.apiUrl;\n }\n getCdnUrl(): string {\n return this.config.cdnUrl;\n }\n getDateFormatLong(): string {\n return this.config.dateFormat.long;\n }\n getDateFormatShort(): string {\n return this.config.dateFormat.short;\n }\n getGoogleApiKey(): string {\n return this.config.map.googleApiKey;\n }\n getMapId(): string {\n return this.config.map.mapId;\n }\n getDefaultLngLat(): LngLat {\n return this.config.map.defaultLngLat;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '..//model/api-response.model';\nimport { SearchParams } from '..//model/api-param.model';\nimport { CoreService } from '../provider/config.provider';\n\nexport interface ParentEntity {\n name: string;\n id: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseEntityApiService<T> {\n private readonly coreService = inject(CoreService);\n protected http = inject(HttpClient);\n protected apiUrl = this.coreService.getApiUrl();\n\n createEntity(entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}`,\n entity\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getListEntity(searchParams: SearchParams.IData, parent?: ParentEntity): Observable<ApiResponse> {\n const filter = JSON.stringify(searchParams.filter);\n const sort = JSON.stringify(searchParams.sort);\n const page = searchParams.page ? JSON.stringify(searchParams.page) : '';\n\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}`,\n {\n params: { filter, sort, page },\n }\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}/${id}`\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n updateEntityById(id: string, entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .patch<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}/${id}`,\n entity\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n deleteEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .delete<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}/${id}`\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getEntityName(): string {\n throw new Error('Method not implemented.');\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, delay, map, Observable, switchMap, tap } from 'rxjs';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '../model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CdnApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n upload(file: File, keyPrefix: string): Observable<string> {\n return this.getPresignedPutUrl(`${keyPrefix}/${file.name}`).pipe(\n switchMap((response) => {\n const presignedUrl = response.data.url;\n const key = response.data.key;\n return this.uploadFile(presignedUrl, file).pipe(\n map(() => {\n return key;\n }),\n catchError((error) => {\n console.error('Upload error:', error);\n return errorHandler(error);\n })\n );\n }),\n catchError((error) => {\n console.error('Error getting presigned URL:', error);\n return errorHandler(error);\n })\n );\n }\n\n getPresignedPutUrl(key: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedPutUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n uploadFile(presignedUrl: string, file: File): Observable<any> {\n return this.http\n .put<any>(presignedUrl, file, {\n headers: { 'x-amz-tagging': 'expire1D=true' },\n })\n .pipe(catchError((error) => errorHandler(error)));\n }\n\n getPresignedGetUrl(key: string): Observable<string> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedGetUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n map((response) => response.data.url)\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '..//model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n getAcl(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/acl`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getListMenuItem(): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/menu`)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Group } from '../store/component/group.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GroupApiService<T extends Group.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'group';\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '../model/api-response.model';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Member } from '../store/component/member.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MemberApiService<T extends Member.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'member';\n }\n\n getProfile(): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/me`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByEmail(email: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/check/email/${email}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByNickname(nickname: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/check/nickname/${nickname}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n registration(member: T): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/registration`,\n member,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Device } from '../store/component/device.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceApiService<T extends Device.IData = Device.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'device';\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { catchError, switchMap, tap, withLatestFrom } from 'rxjs';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { ApiResponse } from '../../model/api-response.model';\nimport { SearchParams } from '../../model/api-param.model';\n\nexport interface TableRowProperty {\n isExpanded?: boolean;\n isSelected?: boolean;\n expandMode?: string;\n bgColor?: string;\n}\n\nexport interface IRow<TExpandMode> {\n id?: string;\n parentId?: string;\n children?: IRow<TExpandMode>[];\n expandMode?: TExpandMode;\n isExpanded?: boolean;\n isSelected?: boolean;\n}\n\nexport interface ITableStateParent {\n id: string;\n name: string;\n}\n\nexport const ITableStateStatusCreating = 'creating';\nexport const ITableStateStatusCreated = 'created';\nexport const ITableStateStatusFailedToCreate = 'failedToCreate';\nexport const ITableStateStatusUpdating = 'updating';\nexport const ITableStateStatusUpdated = 'updated';\nexport const ITableStateStatusFailedToUpdate = 'failedToUpdate';\nexport const ITableStateStatusDeleting = 'deleting';\nexport const ITableStateStatusDeleted = 'deleted';\nexport const ITableStateStatusFailedToDelete = 'failedToDelete';\nexport const ITableStateStatusLoading = 'loading';\nexport const ITableStateStatusLoaded = 'loaded';\nexport const ITableStateStatusFailedToLoad = 'failedToLoad';\n\nexport interface ITableState<TData> {\n status?:\n | typeof ITableStateStatusCreating\n | typeof ITableStateStatusCreated\n | typeof ITableStateStatusFailedToCreate\n | typeof ITableStateStatusUpdating\n | typeof ITableStateStatusUpdated\n | typeof ITableStateStatusFailedToUpdate\n | typeof ITableStateStatusDeleting\n | typeof ITableStateStatusDeleted\n | typeof ITableStateStatusFailedToDelete\n | typeof ITableStateStatusLoading\n | typeof ITableStateStatusLoaded\n | typeof ITableStateStatusFailedToLoad;\n parent?: ITableStateParent;\n isLoading: boolean;\n filter: SearchParams.Filter;\n sort: SearchParams.Sort[];\n page: SearchParams.Page;\n listEntity: TData[];\n lastEvaluatedKey?: any;\n totalCount?: number;\n currentCount?: number;\n}\n\n@Injectable()\nexport class TableStore<\n TState extends ITableState<TData>,\n TData extends IRow<TExpandMode>,\n TExpandMode,\n> extends ComponentStore<TState> {\n // selectors\n public readonly status$ = this.select((state) => state.status);\n public readonly parent$ = this.select((state) => state.parent);\n public readonly filter$ = this.select((state) => state.filter);\n public readonly sort$ = this.select((state) => state.sort);\n public readonly page$ = this.select((state) => state.page);\n public readonly listEntity$ = this.select((state) => state.listEntity);\n public readonly totalCount$ = this.select((state) => state.totalCount);\n public readonly currentCount$ = this.select((state) => state.currentCount);\n public readonly isLoading$ = this.select((state) => state.isLoading);\n public readonly lastEvaluatedKey$ = this.select(\n (state) => state.lastEvaluatedKey,\n );\n\n // effects\n public readonly loadListEntity = this.effect((trigger$) =>\n trigger$.pipe(\n withLatestFrom(\n this.listEntity$,\n this.filter$,\n this.sort$,\n this.page$,\n this.parent$,\n ),\n switchMap(([, listEntity, filter, sort, page, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService\n .getListEntity({ filter, sort, page }, parent)\n .pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: [\n ...listEntity,\n ...(response.data ? response.data : []),\n ],\n totalCount: listEntity.length === 0 ? response.total : (this.get()?.totalCount),\n currentCount: listEntity.length + (response.data ? response.data.length : 0),\n lastEvaluatedKey: response.lastEvaluatedKey,\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly createEntity = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusCreating);\n\n return this.apiService.createEntity(data, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children\n ? [response.data, ...entity.children]\n : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children\n ? [response.data, ...child.children]\n : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return [\n ...(response.data ? [response.data] : []),\n ...listEntity,\n ];\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusCreated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToCreate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly getEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService.getEntityById(id, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children ? [response.data, ...entity.children] : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children ? [response.data, ...child.children] : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) =>\n e.id === response.data.id ? response.data : e,\n );\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly updateEntityById = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusUpdating);\n\n return this.apiService.updateEntityById(data.id, data.entity, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.id ? response.data : child,\n ),\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: child.children?.map((grandChild) =>\n grandChild.id === response.data.id\n ? response.data\n : grandChild,\n ),\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) =>\n e.id === response.data.id ? response.data : e,\n );\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusUpdated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToUpdate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly deleteEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusDeleting);\n\n return this.apiService.deleteEntityById(id, parent).pipe(\n tap(() => {\n this.patchState({\n listEntity: listEntity.filter((e) => e.id !== id),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusDeleted);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToDelete);\n return [];\n }),\n );\n }),\n ),\n );\n\n // actions\n public readonly updateEntity = this.updater((state, data: TData) => ({\n ...state,\n listEntity: state.listEntity.map((e) => {\n return e.id === data.id ? data : e;\n }),\n }));\n\n public readonly updateStatus = this.updater(\n (state, status: TState['status']) => ({\n ...state,\n status,\n }),\n );\n\n public readonly setParent = this.updater(\n (state, parent?: ITableStateParent) => ({\n ...state,\n parent,\n }),\n );\n\n public readonly updateSortField = this.updater(\n (state, sort: SearchParams.Sort) => ({\n ...state,\n sort: [sort],\n }),\n );\n\n public readonly updateFilter = this.updater(\n (state, filter: SearchParams.Filter) => ({\n ...state,\n filter,\n }),\n );\n\n public readonly updatePage = this.updater(\n (state, page: SearchParams.Page) => ({\n ...state,\n page,\n }),\n );\n\n public readonly setExpandMode = this.updater(\n (state, { id, mode }: { id?: string; mode?: TExpandMode }) => ({\n ...state,\n listEntity: state.listEntity.map(\n (e) =>\n ({\n ...e,\n expandMode: e.id === id ? mode : e.expandMode,\n }) as TData,\n ),\n }),\n );\n\n public readonly toggleExpanded = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? !(e.isExpanded || false) : e.isExpanded,\n })),\n }),\n );\n\n public readonly showExpanded = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? true : e.isExpanded,\n })),\n }),\n );\n\n public readonly hideExpanded = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? false : e.isExpanded,\n })),\n }),\n );\n\n public readonly toggleSelected = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isSelected: e.id === id ? !(e.isSelected || false) : e.isSelected,\n })),\n }),\n );\n\n constructor(\n @Inject('initialState') protected initialState: TState,\n @Inject('apiService') protected apiService: any,\n ) {\n super(initialState);\n\n // this.loadListEntity();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\n\nexport namespace Group {\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n deletedTimestamp?: Date;\n active?: boolean;\n organizationId?: string;\n organization?: any; // TODO: Define a proper type for organization\n type?: string;\n name: string;\n codePrefix?: string;\n timezone?: string;\n language?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId?: string[];\n id?: string[];\n type?: string[];\n active?: boolean | null;\n approved?: boolean | null;\n keyword?: string;\n }\n}\n\n@Injectable()\nexport class GroupStore extends TableStore<\n ITableState<Group.IData>,\n IRow<never>,\n never\n> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n id: [],\n type: [],\n active: null,\n approved: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(GroupApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { Group } from './group.store';\n\nexport namespace Member {\n export type MemberType =\n 'systemMember' | 'systemAdmin';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n active?: boolean;\n groupId?: string;\n group?: Group.IData;\n username?: string;\n role?: string;\n type?: string;\n lastName?: string;\n firstName?: string;\n nickname: string;\n mobile?: string;\n email?: string;\n status?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n // isUpdating?: boolean;\n // isDeleting?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId: string[];\n groupId: string[];\n type: string[];\n active: boolean | null;\n keyword: string;\n }\n}\n\n@Injectable()\nexport class MemberStore extends TableStore<\n ITableState<Member.IData>,\n IRow<never>,\n never\n> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n groupId: [],\n type: [],\n active: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(MemberApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRow, ITableState, TableRowProperty, TableStore } from './table.store';\nimport { SearchParams } from '../../model/api-param.model';\nimport { DeviceApiService } from '../../service/device-api.service';\n\nexport namespace Device {\n export type DeviceType = 'printer';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n campaignId?: string;\n type?: DeviceType;\n name: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n campaignId?: string;\n type?: DeviceType[];\n keyword?: string;\n }\n\n @Injectable()\n export class DeviceStore extends TableStore<ITableState<IData>, IRow<never>, Filter> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n campaignId: undefined,\n type: [],\n keyword: undefined,\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(DeviceApiService),\n );\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, of } from 'rxjs';\nimport { catchError, finalize, mergeMap, withLatestFrom } from 'rxjs/operators';\nimport { GlobalSelectors } from './global.selectors';\nimport { GlobalApiService } from '../../service/global-api.service';\nimport { GlobalActions } from './global.actions';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { GlobalState } from './global.state';\nimport { Member } from '../component/member.store';\nimport { Group } from '../component/group.store';\n\n@Injectable()\nexport class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {\n private actions$ = inject(Actions);\n private memberApiService = inject(MemberApiService);\n private globalApiService = inject(GlobalApiService);\n private groupApiService = inject(GroupApiService);\n private store = inject(Store<GlobalState<TM, TG>>);\n\n setAuthenticated$ = createEffect(() =>\n this.actions$.pipe(\n ofType(GlobalActions.setAuthenticated),\n withLatestFrom(this.store.select(GlobalSelectors.selectIsAuthenticated)),\n mergeMap(([action, isAuthenticated]) => {\n if (isAuthenticated) {\n this.store.dispatch(GlobalActions.increaseLoadingReference());\n\n return forkJoin({\n profile: this.memberApiService.getProfile(),\n acl: this.globalApiService.getAcl(),\n listMenuItem: this.globalApiService.getListMenuItem(),\n }).pipe(\n mergeMap(({ profile, acl, listMenuItem }) => {\n const groupId = profile.data.groupId;\n return this.groupApiService.getEntityById(groupId).pipe(\n mergeMap((group) => [\n GlobalActions.setProfile({ profile: profile.data }),\n GlobalActions.setAcl({ acl: acl.data }),\n GlobalActions.setListMenuItem({\n listMenuItem: listMenuItem.data,\n }),\n GlobalActions.setCurrentGroup({ group: group.data }),\n GlobalActions.markInitiated( {initiated:true}),\n ])\n );\n }),\n catchError(() => of(GlobalActions.clearAuthentication())),\n finalize(() => {\n this.store.dispatch(GlobalActions.decreaseLoadingReference());\n })\n );\n }\n return of(GlobalActions.clearAuthentication());\n })\n )\n );\n}\n","import { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Group, Member } from '../component';\n\nexport interface GlobalState<TM extends Member.IData, TG extends Group.IData> {\n initiated: boolean;\n isAuthenticated: boolean;\n loadingReference: number;\n acl: Acl;\n listMenuItem: MenuItem[];\n isSideMenuOpen: boolean;\n language: string;\n profile?: TM;\n currentGroup?: TG;\n}\n\nexport type GlobalStateEx = GlobalState<Member.IData & { [key: string]: any }, Group.IData & { [key: string]: any }>;\n\nexport const initialState: GlobalStateEx = {\n initiated: false,\n isAuthenticated: false,\n loadingReference: 0,\n acl: {},\n listMenuItem: [],\n isSideMenuOpen: false,\n language: 'en', // TODO: Use a proper language management system\n profile: undefined,\n currentGroup: undefined,\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { GlobalActions } from './global.actions';\nimport { initialState } from './global.state';\n\n\nexport const globalReducer = createReducer(\n initialState,\n on(GlobalActions.markInitiated, (state) => ({\n ...state,\n initiated: true,\n })),\n on(GlobalActions.setAuthenticated, (state, { isAuthenticated }) => ({\n ...state,\n isAuthenticated,\n })),\n on(GlobalActions.setProfile, (state, { profile }) => ({\n ...state,\n profile,\n })),\n on(GlobalActions.increaseLoadingReference, (state) => ({\n ...state,\n loadingReference: state.loadingReference + 1,\n })),\n on(GlobalActions.decreaseLoadingReference, (state) => ({\n ...state,\n loadingReference: Math.max(state.loadingReference - 1, 0),\n })),\n on(GlobalActions.setAcl, (state, { acl }) => ({\n ...state,\n acl,\n })),\n on(GlobalActions.setListMenuItem, (state, { listMenuItem }) => ({\n ...state,\n listMenuItem,\n })),\n on(GlobalActions.toggleSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: !state.isSideMenuOpen,\n })),\n on(GlobalActions.closeSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: false,\n })),\n on(GlobalActions.setLanguage, (state, { language }) => ({\n ...state,\n language,\n })),\n on(GlobalActions.setCurrentGroup, (state, { group }) => ({\n ...state,\n currentGroup: group,\n })),\n);\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","catchError","withLatestFrom"],"mappings":"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"}
1
+ {"version":3,"file":"haloduck-core.mjs","sources":["../../../../projects/haloduck/core/src/lib/guard/auth.guard.ts","../../../../projects/haloduck/core/src/lib/interceptor/dummy-member-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/store/global/global.selectors.ts","../../../../projects/haloduck/core/src/lib/interceptor/group-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/interceptor/id-token.interceptor.ts","../../../../projects/haloduck/core/src/lib/model/api-param.model.ts","../../../../projects/haloduck/core/src/lib/model/api-response.model.ts","../../../../projects/haloduck/core/src/lib/pipe/display-name.pipe.ts","../../../../projects/haloduck/core/src/lib/store/global/global.actions.ts","../../../../projects/haloduck/core/src/lib/service/auth.service.ts","../../../../projects/haloduck/core/src/lib/provider/config.provider.ts","../../../../projects/haloduck/core/src/lib/service/base-entity-api.service.ts","../../../../projects/haloduck/core/src/lib/service/cdn.service.ts","../../../../projects/haloduck/core/src/lib/service/global-api.service.ts","../../../../projects/haloduck/core/src/lib/service/group-api.service.ts","../../../../projects/haloduck/core/src/lib/service/member-api.service.ts","../../../../projects/haloduck/core/src/lib/service/device-api.service.ts","../../../../projects/haloduck/core/src/lib/store/component/table.store.ts","../../../../projects/haloduck/core/src/lib/store/component/group.store.ts","../../../../projects/haloduck/core/src/lib/store/component/member.store.ts","../../../../projects/haloduck/core/src/lib/store/component/device.store.ts","../../../../projects/haloduck/core/src/lib/store/global/global.effects.ts","../../../../projects/haloduck/core/src/lib/store/global/global.state.ts","../../../../projects/haloduck/core/src/lib/store/global/global.reducer.ts","../../../../projects/haloduck/core/src/public-api.ts","../../../../projects/haloduck/core/src/haloduck-core.ts"],"sourcesContent":["import { CanActivateFn, Router } from '@angular/router';\nimport { from, map, of, switchMap, take } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const authGuard: CanActivateFn = (route, state) => {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n return of(true);\n }\n\n window.location.href = '/authenticate';\n return of(false);\n }),\n );\n};\n","import { HttpRequest, HttpEvent, HttpInterceptorFn, HttpHandlerFn } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// deprecated\nexport const dummyMemberIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const dummyMemberId = localStorage.getItem('dummyMemberId');\n\n if (req.url.startsWith('http://localhost')) {\n if (dummyMemberId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Dummy-Member-Id': dummyMemberId || '',\n },\n });\n\n return next(clonedRequest);\n }\n }\n\n return next(req);\n};\n","import { createSelector, createFeatureSelector } from '@ngrx/store';\nimport { GlobalStateEx } from './global.state';\n\nexport namespace GlobalSelectors {\n export const selectGlobalState = createFeatureSelector<GlobalStateEx>('global');\n\n export const isInitiated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.initiated,\n );\n\n export const selectIsAuthenticated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isAuthenticated,\n );\n\n export const selectProfile = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.profile,\n );\n\n export const selectIsLoading = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.loadingReference > 0,\n );\n\n export const selectAcl = createSelector(selectGlobalState, (state: GlobalStateEx) => state.acl);\n\n export const selectListMenuItem = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.listMenuItem,\n );\n\n export const selectIsSideMenuOpen = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isSideMenuOpen,\n );\n\n export const selectLanguage = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.language,\n );\n\n export const canActivate = (resource: string, action: string, shouldStripTag?: boolean) =>\n createSelector(selectAcl, (acl) => {\n const allowedActions: string[] = [];\n\n switch (action) {\n case 'delete':\n allowedActions.push('delete');\n break;\n case 'create':\n allowedActions.push('delete');\n allowedActions.push('create');\n break;\n case 'update':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n break;\n case 'read':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n allowedActions.push('read');\n }\n\n const result = Object.keys(acl).some((aclKey) => {\n return ['delete', 'create', 'update', 'read'].some((_action) => {\n if (undefined === acl[aclKey][_action]) {\n return false;\n }\n\n let [_resource, _conditionsRaw] = resource.split(':');\n const _conditions = _conditionsRaw ? _conditionsRaw.split('|') : [];\n\n _resource =\n shouldStripTag && _resource.includes('/') ? _resource.split('/')[0] : _resource;\n\n const _resourceAclArray = acl[aclKey][_action];\n\n return _resourceAclArray.some((_resourceAclRaw: string) => {\n const [_resourceAcl, _conditionsAclRaw] = _resourceAclRaw.split(':');\n const _conditionsAcl = _conditionsAclRaw ? _conditionsAclRaw.split('|') : [];\n\n if (_resourceAcl === '*') {\n return true;\n }\n\n if (\n _resource === _resourceAcl &&\n allowedActions.includes(_action) &&\n (_conditions.length === 0 ||\n _conditionsAcl.some((_condition) => _conditions.includes(_condition)))\n ) {\n return true;\n }\n\n return false;\n });\n });\n });\n\n return result;\n });\n\n export const selectCurrentGroupId = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup?.id,\n );\n\n export const selectCurrentGroup = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup,\n );\n}\n","import { inject } from '@angular/core';\nimport { HttpRequest, HttpEvent, HttpInterceptorFn, HttpHandlerFn } from '@angular/common/http';\nimport { Observable, switchMap, take } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalStateEx } from '../store/global/global.state';\n\n// deprecated\nexport const groupIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const store = inject(Store<GlobalStateEx>);\n const groupId$ = store.select(GlobalSelectors.selectCurrentGroupId);\n\n if (req.url.endsWith('/member/me')) return next(req);\n if (req.url.endsWith('/menu')) return next(req);\n if (req.url.endsWith('/acl')) return next(req);\n\n if (req.url.startsWith('https://api') || req.url.startsWith('http://localhost')) {\n return groupId$.pipe(\n switchMap((groupId) => {\n if (groupId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Group-Id': groupId || '',\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n }\n\n return next(req);\n};\n","import { HttpRequest, HttpEvent, HttpInterceptorFn, HttpHandlerFn } from '@angular/common/http';\nimport { from, Observable, of, switchMap } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const idTokenInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n if (req.url.endsWith('/oauth2/token')) return next(req);\n\n if (req.url.startsWith('https://api')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.idToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n } else if (req.url.startsWith('https://auth') || req.url.startsWith('https://eleven-auth')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.accessToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.accessToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n }\n\n return next(req);\n};\n","export namespace SearchParams {\n export interface IData {\n filter: Filter;\n sort: Sort[];\n page?: Page;\n }\n\n export interface Filter {\n [key: string]: any;\n }\n\n export const SortDirectionAsc = 'asc';\n export const SortDirectionDesc = 'desc';\n export type SortDirection = typeof SortDirectionAsc | typeof SortDirectionDesc | undefined;\n\n export interface Sort {\n field: string | string[];\n direction: SortDirection;\n }\n\n export interface Page {\n limit: number;\n searchAfter?: any;\n }\n\n // export interface OrderAndPage{\n // size: number;\n // sort: Order[];\n // searchAfter?: any[];\n // }\n}\n","import { isDevMode } from '@angular/core';\nimport { Acl } from './acl.model';\nimport { MenuItem } from './menu-item.model';\nimport { Observable } from 'rxjs';\n\nexport interface ApiResponse {\n error: string;\n message?: string;\n data?: Acl | MenuItem[] | any;\n lastEvaluatedKey?: any;\n total?: number;\n}\n\nexport interface ApiError {\n error: string;\n message?: string;\n}\n\nexport function responseHandler(response: ApiResponse): ApiResponse {\n if (!response) {\n errorHandler({\n error: 'empty response',\n message: 'empty response',\n } as ApiError);\n }\n\n if (response.error != '00') {\n errorHandler({\n error: response.error,\n message: response.message,\n } as ApiError);\n }\n\n return response;\n}\n\nexport function errorHandler(err: ApiError): Observable<never> {\n isDevMode() && console.error('API Error: ', err);\n throw err;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Member } from '../store/component/member.store';\n\n@Pipe({\n name: 'displayName',\n})\nexport class DisplayNamePipe implements PipeTransform {\n transform(member: Member.IData | null | undefined): string {\n if (!member) return '';\n return member.nickname?.trim() || member.fullName || '' || (member.email || '').split('@')[0];\n }\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Member } from '../../store/component/member.store';\nimport { Group } from '../../store//component/group.store';\n\nexport namespace GlobalActions {\n export const markInitiated = createAction(\n '[Global] Mark Initiated',\n props<{ initiated: boolean }>(),\n );\n\n export const clearAuthentication = createAction('[Global] Clear Authentication');\n\n export const setAuthenticated = createAction(\n '[Global] Set Authenticated',\n props<{ isAuthenticated: boolean }>(),\n );\n\n export const setProfile = createAction(\n '[Global] Set Profile',\n props<{ profile: Member.IData & { [key: string]: any } }>(),\n );\n\n export const increaseLoadingReference = createAction('[Global] Increase Loading Reference');\n\n export const decreaseLoadingReference = createAction('[Global] Decrease Loading Reference');\n\n export const setAcl = createAction('[Global] Set Acl', props<{ acl: Acl }>());\n\n export const setListMenuItem = createAction(\n '[Global] Set List Menu Item',\n props<{ listMenuItem: MenuItem[] }>(),\n );\n\n export const toggleSideMenu = createAction('[Global] Toggle Side Menu');\n\n export const closeSideMenu = createAction('[Global] Close Side Menu');\n\n export const setLanguage = createAction('[Global] Set Language', props<{ language: string }>());\n\n export const setCurrentGroup = createAction(\n '[Global] Set Current Group',\n props<{ group: Group.IData & { [key: string]: any } }>(),\n );\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { distinctUntilChanged, Observable, tap } from 'rxjs';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalState } from '../store/global/global.state';\nimport { Member } from '../store/component/member.store';\nimport { Group } from '../store/component/group.store';\nimport { GlobalActions } from '../store/global/global.actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService<TM extends Member.IData, TG extends Group.IData> {\n private readonly globalStore = inject(Store<GlobalState<TM, TG>>);\n\n canActivate(resource: string, action: string, shouldStripTag?: boolean): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.canActivate(resource, action, shouldStripTag))\n .pipe(distinctUntilChanged());\n }\n\n getProfile(): Observable<TM | undefined> {\n return this.globalStore.select(GlobalSelectors.selectProfile) as Observable<TM>;\n }\n\n setProfile(profile: TM): void {\n return this.globalStore.dispatch(GlobalActions.setProfile({ profile }));\n }\n\n isAuthenticated(): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.selectIsAuthenticated)\n .pipe(distinctUntilChanged());\n }\n}\n","import { inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { LngLat } from '../model/map.model';\n\nexport const defaultLanguage = { id: 'en', value: 'English' };\nexport const supportedLanguages = [defaultLanguage, { id: 'ko', value: '한국어' }];\n\nexport interface HaloduckCoreConfig {\n stage: string;\n appName: string;\n defaultLanguage: string;\n dateFormat: {\n long: string;\n short: string;\n };\n apiUrl: string;\n cdnUrl: string;\n map: {\n googleApiKey: string;\n mapId: string;\n defaultLngLat: LngLat;\n };\n}\n\nexport const HALODUCK_CORE_CONFIG = new InjectionToken<HaloduckCoreConfig>('HALODUCK_CORE_CONFIG', {\n providedIn: 'root',\n factory: () => ({\n stage: 'local',\n appName: 'please-register-app-name-via-provideHaloduckCoreConfig',\n defaultLanguage: defaultLanguage.id,\n dateFormat: {\n long: 'yyyy-MM-dd',\n short: 'yyMMdd',\n },\n apiUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n cdnUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n map: {\n mapId: 'please-register-map-id-via-provideHaloduckCoreConfig',\n googleApiKey: 'please-register-google-api-key-via-provideHaloduckCoreConfig',\n defaultLngLat: {\n lat: 37.575971,\n lng: 126.9768,\n },\n },\n }),\n});\n\nexport function provideHaloduckCoreConfig(config: HaloduckCoreConfig): Provider {\n return {\n provide: HALODUCK_CORE_CONFIG,\n useValue: config,\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreService {\n private config = inject(HALODUCK_CORE_CONFIG);\n\n constructor() {}\n getStage(): string {\n return this.config.stage;\n }\n getAppName(): string {\n return this.config.appName;\n }\n getDefaultLanguage(): string {\n return this.config.defaultLanguage;\n }\n getApiUrl(): string {\n return this.config.apiUrl;\n }\n getCdnUrl(): string {\n return this.config.cdnUrl;\n }\n getDateFormatLong(): string {\n return this.config.dateFormat.long;\n }\n getDateFormatShort(): string {\n return this.config.dateFormat.short;\n }\n getGoogleApiKey(): string {\n return this.config.map.googleApiKey;\n }\n getMapId(): string {\n return this.config.map.mapId;\n }\n getDefaultLngLat(): LngLat {\n return this.config.map.defaultLngLat;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport { ApiResponse, errorHandler, responseHandler } from '..//model/api-response.model';\nimport { SearchParams } from '..//model/api-param.model';\nimport { CoreService } from '../provider/config.provider';\n\nexport interface ParentEntity {\n name: string;\n id: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseEntityApiService<T> {\n private readonly coreService = inject(CoreService);\n protected http = inject(HttpClient);\n protected apiUrl = this.coreService.getApiUrl();\n\n createEntity(entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}`,\n entity,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getListEntity(searchParams: SearchParams.IData, parent?: ParentEntity): Observable<ApiResponse> {\n const filter = JSON.stringify(searchParams.filter);\n const sort = JSON.stringify(searchParams.sort);\n const page = searchParams.page ? JSON.stringify(searchParams.page) : '';\n\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}`,\n {\n params: { filter, sort, page },\n },\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}/${id}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n updateEntityById(id: string, entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .patch<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}/${id}`,\n entity,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n deleteEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .delete<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}/${id}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getEntityName(): string {\n throw new Error('Method not implemented.');\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, delay, map, Observable, switchMap, tap } from 'rxjs';\nimport { ApiResponse, errorHandler, responseHandler } from '../model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CdnApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n upload(file: File, keyPrefix: string): Observable<string> {\n return this.getPresignedPutUrl(`${keyPrefix}/${file.name}`).pipe(\n switchMap((response) => {\n const presignedUrl = response.data.url;\n const key = response.data.key;\n return this.uploadFile(presignedUrl, file).pipe(\n map(() => {\n return key;\n }),\n catchError((error) => {\n console.error('Upload error:', error);\n return errorHandler(error);\n }),\n );\n }),\n catchError((error) => {\n console.error('Error getting presigned URL:', error);\n return errorHandler(error);\n }),\n );\n }\n\n getPresignedPutUrl(key: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedPutUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n uploadFile(presignedUrl: string, file: File): Observable<any> {\n return this.http\n .put<any>(presignedUrl, file, {\n headers: { 'x-amz-tagging': 'expire1D=true' },\n })\n .pipe(catchError((error) => errorHandler(error)));\n }\n\n getPresignedGetUrl(key: string): Observable<string> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedGetUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n map((response) => response.data.url),\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport { ApiResponse, errorHandler, responseHandler } from '..//model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n getAcl(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/acl`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getListMenuItem(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/menu`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Group } from '../store/component/group.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GroupApiService<T extends Group.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'group';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApiResponse, errorHandler, responseHandler } from '../model/api-response.model';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Member } from '../store/component/member.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MemberApiService<T extends Member.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'member';\n }\n\n getProfile(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/me`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByEmail(email: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/check/email/${email}`)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByNickname(nickname: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/check/nickname/${nickname}`)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n registration(member: T): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/registration`, member)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Device } from '../store/component/device.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceApiService<\n T extends Device.IData = Device.IData,\n> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'device';\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { catchError, switchMap, tap, withLatestFrom } from 'rxjs';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { ApiResponse } from '../../model/api-response.model';\nimport { SearchParams } from '../../model/api-param.model';\n\nexport interface TableRowProperty {\n isExpanded?: boolean;\n isSelected?: boolean;\n expandMode?: string;\n bgColor?: string;\n}\n\nexport interface IRow<TExpandMode> {\n id?: string;\n parentId?: string;\n children?: IRow<TExpandMode>[];\n expandMode?: TExpandMode;\n isExpanded?: boolean;\n isSelected?: boolean;\n}\n\nexport interface ITableStateParent {\n id: string;\n name: string;\n}\n\nexport const ITableStateStatusCreating = 'creating';\nexport const ITableStateStatusCreated = 'created';\nexport const ITableStateStatusFailedToCreate = 'failedToCreate';\nexport const ITableStateStatusUpdating = 'updating';\nexport const ITableStateStatusUpdated = 'updated';\nexport const ITableStateStatusFailedToUpdate = 'failedToUpdate';\nexport const ITableStateStatusDeleting = 'deleting';\nexport const ITableStateStatusDeleted = 'deleted';\nexport const ITableStateStatusFailedToDelete = 'failedToDelete';\nexport const ITableStateStatusLoading = 'loading';\nexport const ITableStateStatusLoaded = 'loaded';\nexport const ITableStateStatusFailedToLoad = 'failedToLoad';\n\nexport interface ITableState<TData> {\n status?:\n | typeof ITableStateStatusCreating\n | typeof ITableStateStatusCreated\n | typeof ITableStateStatusFailedToCreate\n | typeof ITableStateStatusUpdating\n | typeof ITableStateStatusUpdated\n | typeof ITableStateStatusFailedToUpdate\n | typeof ITableStateStatusDeleting\n | typeof ITableStateStatusDeleted\n | typeof ITableStateStatusFailedToDelete\n | typeof ITableStateStatusLoading\n | typeof ITableStateStatusLoaded\n | typeof ITableStateStatusFailedToLoad;\n parent?: ITableStateParent;\n isLoading: boolean;\n filter: SearchParams.Filter;\n sort: SearchParams.Sort[];\n page: SearchParams.Page;\n listEntity: TData[];\n lastEvaluatedKey?: any;\n totalCount?: number;\n currentCount?: number;\n}\n\n@Injectable()\nexport class TableStore<\n TState extends ITableState<TData>,\n TData extends IRow<TExpandMode>,\n TExpandMode,\n> extends ComponentStore<TState> {\n // selectors\n public readonly status$ = this.select((state) => state.status);\n public readonly parent$ = this.select((state) => state.parent);\n public readonly filter$ = this.select((state) => state.filter);\n public readonly sort$ = this.select((state) => state.sort);\n public readonly page$ = this.select((state) => state.page);\n public readonly listEntity$ = this.select((state) => state.listEntity);\n public readonly totalCount$ = this.select((state) => state.totalCount);\n public readonly currentCount$ = this.select((state) => state.currentCount);\n public readonly isLoading$ = this.select((state) => state.isLoading);\n public readonly lastEvaluatedKey$ = this.select((state) => state.lastEvaluatedKey);\n\n // effects\n public readonly loadListEntity = this.effect((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.filter$, this.sort$, this.page$, this.parent$),\n switchMap(([, listEntity, filter, sort, page, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService.getListEntity({ filter, sort, page }, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: [...listEntity, ...(response.data ? response.data : [])],\n totalCount: listEntity.length === 0 ? response.total : this.get()?.totalCount,\n currentCount: listEntity.length + (response.data ? response.data.length : 0),\n lastEvaluatedKey: response.lastEvaluatedKey,\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly createEntity = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusCreating);\n\n return this.apiService.createEntity(data, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children\n ? [response.data, ...entity.children]\n : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children\n ? [response.data, ...child.children]\n : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return [...(response.data ? [response.data] : []), ...listEntity];\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusCreated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToCreate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly getEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService.getEntityById(id, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children\n ? [response.data, ...entity.children]\n : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children\n ? [response.data, ...child.children]\n : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) => (e.id === response.data.id ? response.data : e));\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly updateEntityById = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusUpdating);\n\n return this.apiService.updateEntityById(data.id, data.entity, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.id ? response.data : child,\n ),\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: child.children?.map((grandChild) =>\n grandChild.id === response.data.id ? response.data : grandChild,\n ),\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) => (e.id === response.data.id ? response.data : e));\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusUpdated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToUpdate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly deleteEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusDeleting);\n\n return this.apiService.deleteEntityById(id, parent).pipe(\n tap(() => {\n this.patchState({\n listEntity: listEntity.filter((e) => e.id !== id),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusDeleted);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToDelete);\n return [];\n }),\n );\n }),\n ),\n );\n\n // actions\n public readonly updateEntity = this.updater((state, data: TData) => ({\n ...state,\n listEntity: state.listEntity.map((e) => {\n return e.id === data.id ? data : e;\n }),\n }));\n\n public readonly updateStatus = this.updater((state, status: TState['status']) => ({\n ...state,\n status,\n }));\n\n public readonly setParent = this.updater((state, parent?: ITableStateParent) => ({\n ...state,\n parent,\n }));\n\n public readonly updateSortField = this.updater((state, sort: SearchParams.Sort) => ({\n ...state,\n sort: [sort],\n }));\n\n public readonly updateFilter = this.updater((state, filter: SearchParams.Filter) => ({\n ...state,\n filter,\n }));\n\n public readonly updatePage = this.updater((state, page: SearchParams.Page) => ({\n ...state,\n page,\n }));\n\n public readonly setExpandMode = this.updater(\n (state, { id, mode }: { id?: string; mode?: TExpandMode }) => ({\n ...state,\n listEntity: state.listEntity.map(\n (e) =>\n ({\n ...e,\n expandMode: e.id === id ? mode : e.expandMode,\n }) as TData,\n ),\n }),\n );\n\n public readonly toggleExpanded = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? !(e.isExpanded || false) : e.isExpanded,\n })),\n }));\n\n public readonly showExpanded = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? true : e.isExpanded,\n })),\n }));\n\n public readonly hideExpanded = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? false : e.isExpanded,\n })),\n }));\n\n public readonly toggleSelected = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isSelected: e.id === id ? !(e.isSelected || false) : e.isSelected,\n })),\n }));\n\n constructor(\n @Inject('initialState') protected initialState: TState,\n @Inject('apiService') protected apiService: any,\n ) {\n super(initialState);\n\n // this.loadListEntity();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\n\nexport namespace Group {\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n deletedTimestamp?: Date;\n active?: boolean;\n organizationId?: string;\n organization?: any; // TODO: Define a proper type for organization\n type?: string;\n name: string;\n codePrefix?: string;\n timezone?: string;\n language?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId?: string[];\n id?: string[];\n type?: string[];\n active?: boolean | null;\n approved?: boolean | null;\n keyword?: string;\n }\n}\n\n@Injectable()\nexport class GroupStore extends TableStore<ITableState<Group.IData>, IRow<never>, never> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n id: [],\n type: [],\n active: null,\n approved: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(GroupApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { Group } from './group.store';\n\nexport namespace Member {\n export type MemberType = 'systemMember' | 'systemAdmin';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n active?: boolean;\n groupId?: string;\n group?: Group.IData;\n username?: string;\n role?: string;\n type?: string;\n fullName?: string;\n nickname: string;\n mobile?: string;\n email?: string;\n status?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n // isUpdating?: boolean;\n // isDeleting?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId: string[];\n groupId: string[];\n type: string[];\n active: boolean | null;\n keyword: string;\n }\n}\n\n@Injectable()\nexport class MemberStore extends TableStore<ITableState<Member.IData>, IRow<never>, never> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n groupId: [],\n type: [],\n active: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(MemberApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRow, ITableState, TableRowProperty, TableStore } from './table.store';\nimport { SearchParams } from '../../model/api-param.model';\nimport { DeviceApiService } from '../../service/device-api.service';\n\nexport namespace Device {\n export type DeviceType = 'printer';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n campaignId?: string;\n type?: DeviceType;\n name: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n campaignId?: string;\n type?: DeviceType[];\n keyword?: string;\n }\n\n @Injectable()\n export class DeviceStore extends TableStore<ITableState<IData>, IRow<never>, Filter> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n campaignId: undefined,\n type: [],\n keyword: undefined,\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(DeviceApiService),\n );\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, of } from 'rxjs';\nimport { catchError, finalize, mergeMap, withLatestFrom } from 'rxjs/operators';\nimport { GlobalSelectors } from './global.selectors';\nimport { GlobalApiService } from '../../service/global-api.service';\nimport { GlobalActions } from './global.actions';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { GlobalState } from './global.state';\nimport { Member } from '../component/member.store';\nimport { Group } from '../component/group.store';\n\n@Injectable()\nexport class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {\n private actions$ = inject(Actions);\n private memberApiService = inject(MemberApiService);\n private globalApiService = inject(GlobalApiService);\n private groupApiService = inject(GroupApiService);\n private store = inject(Store<GlobalState<TM, TG>>);\n\n setAuthenticated$ = createEffect(() =>\n this.actions$.pipe(\n ofType(GlobalActions.setAuthenticated),\n withLatestFrom(this.store.select(GlobalSelectors.selectIsAuthenticated)),\n mergeMap(([action, isAuthenticated]) => {\n if (isAuthenticated) {\n this.store.dispatch(GlobalActions.increaseLoadingReference());\n\n return forkJoin({\n profile: this.memberApiService.getProfile(),\n acl: this.globalApiService.getAcl(),\n listMenuItem: this.globalApiService.getListMenuItem(),\n }).pipe(\n mergeMap(({ profile, acl, listMenuItem }) => {\n const groupId = profile.data.groupId;\n return this.groupApiService.getEntityById(groupId).pipe(\n mergeMap((group) => [\n GlobalActions.setProfile({ profile: profile.data }),\n GlobalActions.setAcl({ acl: acl.data }),\n GlobalActions.setListMenuItem({\n listMenuItem: listMenuItem.data,\n }),\n GlobalActions.setCurrentGroup({ group: group.data }),\n GlobalActions.markInitiated({ initiated: true }),\n ]),\n );\n }),\n catchError(() => of(GlobalActions.clearAuthentication())),\n finalize(() => {\n this.store.dispatch(GlobalActions.decreaseLoadingReference());\n }),\n );\n }\n return of(GlobalActions.clearAuthentication());\n }),\n ),\n );\n}\n","import { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Group, Member } from '../component';\n\nexport interface GlobalState<TM extends Member.IData, TG extends Group.IData> {\n initiated: boolean;\n isAuthenticated: boolean;\n loadingReference: number;\n acl: Acl;\n listMenuItem: MenuItem[];\n isSideMenuOpen: boolean;\n language: string;\n profile?: TM;\n currentGroup?: TG;\n}\n\nexport type GlobalStateEx = GlobalState<\n Member.IData & { [key: string]: any },\n Group.IData & { [key: string]: any }\n>;\n\nexport const initialState: GlobalStateEx = {\n initiated: false,\n isAuthenticated: false,\n loadingReference: 0,\n acl: {},\n listMenuItem: [],\n isSideMenuOpen: false,\n language: 'en', // TODO: Use a proper language management system\n profile: undefined,\n currentGroup: undefined,\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { GlobalActions } from './global.actions';\nimport { initialState } from './global.state';\n\nexport const globalReducer = createReducer(\n initialState,\n on(GlobalActions.markInitiated, (state) => ({\n ...state,\n initiated: true,\n })),\n on(GlobalActions.setAuthenticated, (state, { isAuthenticated }) => ({\n ...state,\n isAuthenticated,\n })),\n on(GlobalActions.setProfile, (state, { profile }) => ({\n ...state,\n profile,\n })),\n on(GlobalActions.increaseLoadingReference, (state) => ({\n ...state,\n loadingReference: state.loadingReference + 1,\n })),\n on(GlobalActions.decreaseLoadingReference, (state) => ({\n ...state,\n loadingReference: Math.max(state.loadingReference - 1, 0),\n })),\n on(GlobalActions.setAcl, (state, { acl }) => ({\n ...state,\n acl,\n })),\n on(GlobalActions.setListMenuItem, (state, { listMenuItem }) => ({\n ...state,\n listMenuItem,\n })),\n on(GlobalActions.toggleSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: !state.isSideMenuOpen,\n })),\n on(GlobalActions.closeSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: false,\n })),\n on(GlobalActions.setLanguage, (state, { language }) => ({\n ...state,\n language,\n })),\n on(GlobalActions.setCurrentGroup, (state, { group }) => ({\n ...state,\n currentGroup: group,\n })),\n);\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","catchError","withLatestFrom"],"mappings":";;;;;;;;;;MAIa,SAAS,GAAkB,CAAC,KAAK,EAAE,KAAK,KAAI;AACvD,IAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAClC,SAAS,CAAC,CAAC,OAAO,KAAI;AACpB,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAC3B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAGjB,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,eAAe;AACtC,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB,CAAC,CACH;AACH;;ACZA;MACa,wBAAwB,GAAsB,CACzD,GAAyB,EACzB,IAAmB,KACe;IAClC,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;IAE3D,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;QAC1C,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC;AAC9B,gBAAA,UAAU,EAAE;oBACV,mBAAmB,EAAE,aAAa,IAAI,EAAE;AACzC,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC;;;AAI9B,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB;;ACpBM,IAAW;AAAjB,CAAA,UAAiB,eAAe,EAAA;AACjB,IAAA,eAAA,CAAA,iBAAiB,GAAG,qBAAqB,CAAgB,QAAQ,CAAC;AAElE,IAAA,eAAA,CAAA,WAAW,GAAG,cAAc,CACvC,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,SAAS,CAC1C;AAEY,IAAA,eAAA,CAAA,qBAAqB,GAAG,cAAc,CACjD,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,eAAe,CAChD;AAEY,IAAA,eAAA,CAAA,aAAa,GAAG,cAAc,CACzC,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,OAAO,CACxC;AAEY,IAAA,eAAA,CAAA,eAAe,GAAG,cAAc,CAC3C,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,gBAAgB,GAAG,CAAC,CACrD;AAEY,IAAA,eAAA,CAAA,SAAS,GAAG,cAAc,CAAC,eAAA,CAAA,iBAAiB,EAAE,CAAC,KAAoB,KAAK,KAAK,CAAC,GAAG,CAAC;AAElF,IAAA,eAAA,CAAA,kBAAkB,GAAG,cAAc,CAC9C,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,YAAY,CAC7C;AAEY,IAAA,eAAA,CAAA,oBAAoB,GAAG,cAAc,CAChD,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,cAAc,CAC/C;AAEY,IAAA,eAAA,CAAA,cAAc,GAAG,cAAc,CAC1C,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,QAAQ,CACzC;AAEY,IAAA,eAAA,CAAA,WAAW,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,cAAwB,KACpF,cAAc,CAAC,eAAA,CAAA,SAAS,EAAE,CAAC,GAAG,KAAI;QAChC,MAAM,cAAc,GAAa,EAAE;QAEnC,QAAQ,MAAM;AACZ,YAAA,KAAK,QAAQ;AACX,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC7B;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC7B;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC7B;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,gBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;AAG/B,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC9C,YAAA,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;gBAC7D,IAAI,SAAS,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE;AACtC,oBAAA,OAAO,KAAK;;AAGd,gBAAA,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACrD,gBAAA,MAAM,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBAEnE,SAAS;oBACP,cAAc,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;gBAEjF,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAE9C,gBAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,eAAuB,KAAI;AACxD,oBAAA,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;AACpE,oBAAA,MAAM,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;AAE5E,oBAAA,IAAI,YAAY,KAAK,GAAG,EAAE;AACxB,wBAAA,OAAO,IAAI;;oBAGb,IACE,SAAS,KAAK,YAAY;AAC1B,wBAAA,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChC,yBAAC,WAAW,CAAC,MAAM,KAAK,CAAC;AACvB,4BAAA,cAAc,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EACxE;AACA,wBAAA,OAAO,IAAI;;AAGb,oBAAA,OAAO,KAAK;AACd,iBAAC,CAAC;AACJ,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,OAAO,MAAM;AACf,KAAC,CAAC;AAES,IAAA,eAAA,CAAA,oBAAoB,GAAG,cAAc,CAChD,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,YAAY,EAAE,EAAE,CACjD;AAEY,IAAA,eAAA,CAAA,kBAAkB,GAAG,cAAc,CAC9C,eAAA,CAAA,iBAAiB,EACjB,CAAC,KAAoB,KAAK,KAAK,CAAC,YAAY,CAC7C;AACH,CAAC,EAhHgB,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;ACIhC;MACa,kBAAkB,GAAsB,CACnD,GAAyB,EACzB,IAAmB,KACe;IAClC,MAAM,KAAK,GAAG,MAAM,EAAC,KAAoB,EAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC;AAEnE,IAAA,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AACpD,IAAA,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAC/C,IAAA,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAE9C,IAAA,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;QAC/E,OAAO,QAAQ,CAAC,IAAI,CAClB,SAAS,CAAC,CAAC,OAAO,KAAI;YACpB,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC;AAC9B,oBAAA,UAAU,EAAE;wBACV,YAAY,EAAE,OAAO,IAAI,EAAE;AAC5B,qBAAA;AACF,iBAAA,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC;;AAG5B,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;SACjB,CAAC,CACH;;AAGH,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB;;MCjCa,kBAAkB,GAAsB,CACnD,GAAyB,EACzB,IAAmB,KACe;AAClC,IAAA,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC;IAEvD,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AACrC,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAClC,SAAS,CAAC,CAAC,OAAO,KAAI;AACpB,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAC3B,gBAAA,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC;AAC9B,oBAAA,UAAU,EAAE;AACV,wBAAA,aAAa,EAAE,CAAA,OAAA,EAAU,OAAO,CAAC,MAAM,CAAC,OAAO,CAAA,CAAE;AAClD,qBAAA;AACF,iBAAA,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC;;AAG5B,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;SACjB,CAAC,CACH;;AACI,SAAA,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE;AAC1F,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAClC,SAAS,CAAC,CAAC,OAAO,KAAI;AACpB,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE;AAC/B,gBAAA,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC;AAC9B,oBAAA,UAAU,EAAE;AACV,wBAAA,aAAa,EAAE,CAAA,OAAA,EAAU,OAAO,CAAC,MAAM,CAAC,WAAW,CAAA,CAAE;AACtD,qBAAA;AACF,iBAAA,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC;;AAG5B,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;SACjB,CAAC,CACH;;AAGH,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB;;AC3CM,IAAW;AAAjB,CAAA,UAAiB,YAAY,EAAA;IAWd,YAAA,CAAA,gBAAgB,GAAG,KAAK;IACxB,YAAA,CAAA,iBAAiB,GAAG,MAAM;;;;;;AAkBzC,CAAC,EA9BgB,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ACkBvB,SAAU,eAAe,CAAC,QAAqB,EAAA;IACnD,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,YAAY,CAAC;AACX,YAAA,KAAK,EAAE,gBAAgB;AACvB,YAAA,OAAO,EAAE,gBAAgB;AACd,SAAA,CAAC;;AAGhB,IAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE;AAC1B,QAAA,YAAY,CAAC;YACX,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;AACd,SAAA,CAAC;;AAGhB,IAAA,OAAO,QAAQ;AACjB;AAEM,SAAU,YAAY,CAAC,GAAa,EAAA;IACxC,SAAS,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC;AAChD,IAAA,MAAM,GAAG;AACX;;MCjCa,eAAe,CAAA;AAC1B,IAAA,SAAS,CAAC,MAAuC,EAAA;AAC/C,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AACtB,QAAA,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;uGAHpF,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACpB,iBAAA;;;ACCK,IAAW;AAAjB,CAAA,UAAiB,aAAa,EAAA;IACf,aAAA,CAAA,aAAa,GAAG,YAAY,CACvC,yBAAyB,EACzB,KAAK,EAA0B,CAChC;AAEY,IAAA,aAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,+BAA+B,CAAC;IAEnE,aAAA,CAAA,gBAAgB,GAAG,YAAY,CAC1C,4BAA4B,EAC5B,KAAK,EAAgC,CACtC;IAEY,aAAA,CAAA,UAAU,GAAG,YAAY,CACpC,sBAAsB,EACtB,KAAK,EAAsD,CAC5D;AAEY,IAAA,aAAA,CAAA,wBAAwB,GAAG,YAAY,CAAC,qCAAqC,CAAC;AAE9E,IAAA,aAAA,CAAA,wBAAwB,GAAG,YAAY,CAAC,qCAAqC,CAAC;IAE9E,aAAA,CAAA,MAAM,GAAG,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAgB,CAAC;IAEhE,aAAA,CAAA,eAAe,GAAG,YAAY,CACzC,6BAA6B,EAC7B,KAAK,EAAgC,CACtC;AAEY,IAAA,aAAA,CAAA,cAAc,GAAG,YAAY,CAAC,2BAA2B,CAAC;AAE1D,IAAA,aAAA,CAAA,aAAa,GAAG,YAAY,CAAC,0BAA0B,CAAC;IAExD,aAAA,CAAA,WAAW,GAAG,YAAY,CAAC,uBAAuB,EAAE,KAAK,EAAwB,CAAC;IAElF,aAAA,CAAA,eAAe,GAAG,YAAY,CACzC,4BAA4B,EAC5B,KAAK,EAAmD,CACzD;AACH,CAAC,EAvCgB,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;MCMjB,WAAW,CAAA;AACL,IAAA,WAAW,GAAG,MAAM,EAAC,KAA0B,EAAC;AAEjE,IAAA,WAAW,CAAC,QAAgB,EAAE,MAAc,EAAE,cAAwB,EAAA;QACpE,OAAO,IAAI,CAAC;aACT,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC;AACpE,aAAA,IAAI,CAAC,oBAAoB,EAAE,CAAC;;IAGjC,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CAAmB;;AAGjF,IAAA,UAAU,CAAC,OAAW,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;;IAGzE,eAAe,GAAA;QACb,OAAO,IAAI,CAAC;AACT,aAAA,MAAM,CAAC,eAAe,CAAC,qBAAqB;AAC5C,aAAA,IAAI,CAAC,oBAAoB,EAAE,CAAC;;uGApBtB,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,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;;;ACRM,MAAM,eAAe,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS;AACpD,MAAM,kBAAkB,GAAG,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;MAmBjE,oBAAoB,GAAG,IAAI,cAAc,CAAqB,sBAAsB,EAAE;AACjG,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,wDAAwD;QACjE,eAAe,EAAE,eAAe,CAAC,EAAE;AACnC,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,QAAQ;AAChB,SAAA;AACD,QAAA,MAAM,EAAE,2DAA2D;AACnE,QAAA,MAAM,EAAE,2DAA2D;AACnE,QAAA,GAAG,EAAE;AACH,YAAA,KAAK,EAAE,sDAAsD;AAC7D,YAAA,YAAY,EAAE,8DAA8D;AAC5E,YAAA,aAAa,EAAE;AACb,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,QAAQ;AACd,aAAA;AACF,SAAA;KACF,CAAC;AACH,CAAA;AAEK,SAAU,yBAAyB,CAAC,MAA0B,EAAA;IAClE,OAAO;AACL,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,QAAQ,EAAE,MAAM;KACjB;AACH;MAKa,WAAW,CAAA;AACd,IAAA,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAE7C,IAAA,WAAA,GAAA;IACA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;;IAE1B,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;;IAE5B,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe;;IAEpC,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;;IAE3B,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;;IAE3B,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI;;IAEpC,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;;IAErC,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY;;IAErC,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;;IAE9B,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa;;uGAhC3B,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,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;;;MCxCY,oBAAoB,CAAA;AACd,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACxC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;IAE/C,YAAY,CAAC,MAAS,EAAE,MAAqB,EAAA;QAC3C,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,CAAA,CAAE,EAC5F,MAAM;aAEP,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;IAGL,aAAa,CAAC,YAAgC,EAAE,MAAqB,EAAA;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;QAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE;QAEvE,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,EAAE,EAC5F;AACE,YAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;SAC/B;aAEF,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;IAGL,aAAa,CAAC,EAAU,EAAE,MAAqB,EAAA;QAC7C,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,CAAA,CAAA,EAAI,EAAE,EAAE;aAEnG,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;AAGL,IAAA,gBAAgB,CAAC,EAAU,EAAE,MAAS,EAAE,MAAqB,EAAA;QAC3D,OAAO,IAAI,CAAC;AACT,aAAA,KAAK,CACJ,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,EAClG,MAAM;aAEP,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;IAGL,gBAAgB,CAAC,EAAU,EAAE,MAAqB,EAAA;QAChD,OAAO,IAAI,CAAC;AACT,aAAA,MAAM,CACL,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,CAAA,CAAA,EAAI,EAAE,EAAE;aAEnG,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;IAGL,aAAa,GAAA;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;;uGAtEjC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCLY,aAAa,CAAA;AACP,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1C,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;IAE7C,MAAM,CAAC,IAAU,EAAE,SAAiB,EAAA;QAClC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAC9D,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrB,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG;AACtC,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG;AAC7B,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,MAAK;AACP,gBAAA,OAAO,GAAG;AACZ,aAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC;AACrC,gBAAA,OAAO,YAAY,CAAC,KAAK,CAAC;aAC3B,CAAC,CACH;AACH,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;AACpD,YAAA,OAAO,YAAY,CAAC,KAAK,CAAC;SAC3B,CAAC,CACH;;AAGH,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAC5B,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAc,CAAA,EAAG,IAAI,CAAC,MAAM,uBAAuB,EAAE;YACvD,MAAM,EAAE,EAAE,GAAG,EAAE;SAChB;aACA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;IAGL,UAAU,CAAC,YAAoB,EAAE,IAAU,EAAA;QACzC,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAM,YAAY,EAAE,IAAI,EAAE;AAC5B,YAAA,OAAO,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE;SAC9C;AACA,aAAA,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;;AAGrD,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAC5B,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAc,CAAA,EAAG,IAAI,CAAC,MAAM,uBAAuB,EAAE;YACvD,MAAM,EAAE,EAAE,GAAG,EAAE;SAChB;AACA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,EAC1C,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CACrC;;uGAvDM,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,MAAM;AACnB,iBAAA;;;MCCY,gBAAgB,CAAA;AACV,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1C,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;IAE7C,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,GAAG,IAAI,CAAC,MAAM,CAAA,IAAA,CAAM,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;IAGH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,GAAG,IAAI,CAAC,MAAM,CAAA,KAAA,CAAO,CAAC,CAAC,IAAI,CAC3D,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;uGAhBQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACDK,MAAO,eAAuC,SAAQ,oBAAuB,CAAA;IACxE,aAAa,GAAA;AACpB,QAAA,OAAO,OAAO;;uGAFL,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACIK,MAAO,gBAAyC,SAAQ,oBAAuB,CAAA;IAC1E,aAAa,GAAA;AACpB,QAAA,OAAO,QAAQ;;IAGjB,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,CAAA,EAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAA,GAAA,CAAK,CAAC,CAAC,IAAI,CACjFA,KAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5CC,YAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;AAGH,IAAA,kBAAkB,CAAC,KAAa,EAAA;QAC9B,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAc,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,EAAE,CAAA,aAAA,EAAgB,KAAK,EAAE;aAC9E,IAAI,CACHD,KAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5CC,YAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;AAGL,IAAA,qBAAqB,CAAC,QAAgB,EAAA;QACpC,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAc,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,EAAE,CAAA,gBAAA,EAAmB,QAAQ,EAAE;aACpF,IAAI,CACHD,KAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5CC,YAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;AAGL,IAAA,YAAY,CAAC,MAAS,EAAA;QACpB,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAc,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,EAAE,CAAA,aAAA,CAAe,EAAE,MAAM;aAC9E,IAAI,CACHD,KAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,EAC5CC,YAAU,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAC3C;;uGApCM,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACFK,MAAO,gBAEX,SAAQ,oBAAuB,CAAA;IACtB,aAAa,GAAA;AACpB,QAAA,OAAO,QAAQ;;uGAJN,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACqBM,MAAM,yBAAyB,GAAG;AAClC,MAAM,wBAAwB,GAAG;AACjC,MAAM,+BAA+B,GAAG;AACxC,MAAM,yBAAyB,GAAG;AAClC,MAAM,wBAAwB,GAAG;AACjC,MAAM,+BAA+B,GAAG;AACxC,MAAM,yBAAyB,GAAG;AAClC,MAAM,wBAAwB,GAAG;AACjC,MAAM,+BAA+B,GAAG;AACxC,MAAM,wBAAwB,GAAG;AACjC,MAAM,uBAAuB,GAAG;AAChC,MAAM,6BAA6B,GAAG;AA4BvC,MAAO,UAIX,SAAQ,cAAsB,CAAA;AA6UM,IAAA,YAAA;AACF,IAAA,UAAA;;AA5UlB,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC;AAC9C,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC;AAC9C,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC;AAC9C,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;AAC1C,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;AAC1C,IAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC;AACtD,IAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC;AACtD,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC;AAC1D,IAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AACpD,IAAA,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,gBAAgB,CAAC;;IAGlE,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,KACpD,QAAQ,CAAC,IAAI,CACX,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EACpF,SAAS,CAAC,CAAC,GAAG,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAI;AACvD,QAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC;QAE3C,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CACvE,GAAG,CAAC,CAAC,QAAqB,KAAI;YAC5B,IAAI,CAAC,UAAU,CAAC;gBACd,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;gBACpE,UAAU,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU;gBAC7E,YAAY,EAAE,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC5E,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;AACzB,aAAA,CAAC;AAErB,YAAA,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;AAC5C,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC;AAChD,YAAA,OAAO,EAAE;SACV,CAAC,CACH;KACF,CAAC,CACH,CACF;AAEe,IAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAM,CAAC,QAAQ,KACvD,QAAQ,CAAC,IAAI,CACX,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAC9C,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,KAAI;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC;AAE5C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,QAAqB,KAAI;YAC5B,IAAI,CAAC,UAAU,CAAC;gBACd,UAAU,EAAE,CAAC,MAAK;AAChB,oBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;wBAC3B,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;4BAClD,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;gCACxC,OAAO;AACL,oCAAA,GAAG,MAAM;AACT,oCAAA,QAAQ,EAAE;wCACR,IAAI,MAAM,CAAC;8CACP,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ;AACpC,8CAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,qCAAA;iCACF;;AAEH,4BAAA,OAAO,MAAM;AACf,yBAAC,CAAC;wBAEF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CACzC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,CACjD;wBAED,IAAI,CAAC,YAAY,EAAE;4BACjB,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACxC,gCAAA,GAAG,MAAM;gCACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,KACnC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC;AACzB,sCAAE;AACE,wCAAA,GAAG,KAAK;AACR,wCAAA,QAAQ,EAAE;4CACR,IAAI,KAAK,CAAC;kDACN,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ;AACnC,kDAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,yCAAA;AACF;sCACD,KAAK,CACV;AACF,6BAAA,CAAC,CAAC;;AAGL,wBAAA,OAAO,iBAAiB;;oBAG1B,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC;AACnE,iBAAC,GAAG;AACc,aAAA,CAAC;AAErB,YAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC;AAC7C,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC;AAClD,YAAA,OAAO,EAAE;SACV,CAAC,CACH;KACF,CAAC,CACH,CACF;AAEe,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,CAAS,CAAC,QAAQ,KAC3D,QAAQ,CAAC,IAAI,CACX,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAC9C,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,KAAI;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC;AAE3C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,CAAC,QAAqB,KAAI;YAC5B,IAAI,CAAC,UAAU,CAAC;gBACd,UAAU,EAAE,CAAC,MAAK;AAChB,oBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;wBAC3B,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;4BAClD,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;gCACxC,OAAO;AACL,oCAAA,GAAG,MAAM;AACT,oCAAA,QAAQ,EAAE;wCACR,IAAI,MAAM,CAAC;8CACP,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ;AACpC,8CAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,qCAAA;iCACF;;AAEH,4BAAA,OAAO,MAAM;AACf,yBAAC,CAAC;wBAEF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CACzC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,CACjD;wBAED,IAAI,CAAC,YAAY,EAAE;4BACjB,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACxC,gCAAA,GAAG,MAAM;gCACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,KACnC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC;AACzB,sCAAE;AACE,wCAAA,GAAG,KAAK;AACR,wCAAA,QAAQ,EAAE;4CACR,IAAI,KAAK,CAAC;kDACN,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ;AACnC,kDAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,yCAAA;AACF;sCACD,KAAK,CACV;AACF,6BAAA,CAAC,CAAC;;AAGL,wBAAA,OAAO,iBAAiB;;AAG1B,oBAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/E,iBAAC,GAAG;AACc,aAAA,CAAC;AAErB,YAAA,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;AAC5C,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC;AAChD,YAAA,OAAO,EAAE;SACV,CAAC,CACH;KACF,CAAC,CACH,CACF;AAEe,IAAA,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAM,CAAC,QAAQ,KAC3D,QAAQ,CAAC,IAAI,CACX,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAC9C,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,KAAI;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC;QAE5C,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,CAAC,QAAqB,KAAI;YAC5B,IAAI,CAAC,UAAU,CAAC;gBACd,UAAU,EAAE,CAAC,MAAK;AAChB,oBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;wBAC3B,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;4BAClD,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;gCACxC,OAAO;AACL,oCAAA,GAAG,MAAM;AACT,oCAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,KACnC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,CACtD;iCACF;;AAEH,4BAAA,OAAO,MAAM;AACf,yBAAC,CAAC;wBAEF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CACzC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,CACjD;wBAED,IAAI,CAAC,YAAY,EAAE;4BACjB,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACxC,gCAAA,GAAG,MAAM;gCACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,KACnC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC;AACzB,sCAAE;AACE,wCAAA,GAAG,KAAK;AACR,wCAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,UAAU,KACvC,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,UAAU,CAChE;AACF;sCACD,KAAK,CACV;AACF,6BAAA,CAAC,CAAC;;AAGL,wBAAA,OAAO,iBAAiB;;AAG1B,oBAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/E,iBAAC,GAAG;AACc,aAAA,CAAC;AAErB,YAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC;AAC7C,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC;AAClD,YAAA,OAAO,EAAE;SACV,CAAC,CACH;KACF,CAAC,CACH,CACF;AAEe,IAAA,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAS,CAAC,QAAQ,KAC9D,QAAQ,CAAC,IAAI,CACX,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAC9C,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,KAAI;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC;AAE5C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,UAAU,CAAC;AACd,gBAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/B,aAAA,CAAC;AAErB,YAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC;AAC7C,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC;AAClD,YAAA,OAAO,EAAE;SACV,CAAC,CACH;KACF,CAAC,CACH,CACF;;AAGe,IAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAW,MAAM;AACnE,QAAA,GAAG,KAAK;QACR,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACrC,YAAA,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC;AACpC,SAAC,CAAC;AACH,KAAA,CAAC,CAAC;AAEa,IAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAwB,MAAM;AAChF,QAAA,GAAG,KAAK;QACR,MAAM;AACP,KAAA,CAAC,CAAC;AAEa,IAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAA0B,MAAM;AAC/E,QAAA,GAAG,KAAK;QACR,MAAM;AACP,KAAA,CAAC,CAAC;AAEa,IAAA,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAuB,MAAM;AAClF,QAAA,GAAG,KAAK;QACR,IAAI,EAAE,CAAC,IAAI,CAAC;AACb,KAAA,CAAC,CAAC;AAEa,IAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAA2B,MAAM;AACnF,QAAA,GAAG,KAAK;QACR,MAAM;AACP,KAAA,CAAC,CAAC;AAEa,IAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAuB,MAAM;AAC7E,QAAA,GAAG,KAAK;QACR,IAAI;AACL,KAAA,CAAC,CAAC;AAEa,IAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAC1C,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAuC,MAAM;AAC7D,QAAA,GAAG,KAAK;AACR,QAAA,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAC9B,CAAC,CAAC,MACC;AACC,YAAA,GAAG,CAAC;AACJ,YAAA,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU;AAC9C,SAAA,CAAU,CACd;AACF,KAAA,CAAC,CACH;AAEe,IAAA,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAmB,MAAM;AACjF,QAAA,GAAG,KAAK;AACR,QAAA,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvC,YAAA,GAAG,CAAC;YACJ,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU;AAClE,SAAA,CAAC,CAAC;AACJ,KAAA,CAAC,CAAC;AAEa,IAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAmB,MAAM;AAC/E,QAAA,GAAG,KAAK;AACR,QAAA,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvC,YAAA,GAAG,CAAC;AACJ,YAAA,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU;AAC9C,SAAA,CAAC,CAAC;AACJ,KAAA,CAAC,CAAC;AAEa,IAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAmB,MAAM;AAC/E,QAAA,GAAG,KAAK;AACR,QAAA,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvC,YAAA,GAAG,CAAC;AACJ,YAAA,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,UAAU;AAC/C,SAAA,CAAC,CAAC;AACJ,KAAA,CAAC,CAAC;AAEa,IAAA,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAmB,MAAM;AACjF,QAAA,GAAG,KAAK;AACR,QAAA,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvC,YAAA,GAAG,CAAC;YACJ,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU;AAClE,SAAA,CAAC,CAAC;AACJ,KAAA,CAAC,CAAC;IAEH,WAAA,CACoC,YAAoB,EACtB,UAAe,EAAA;QAE/C,KAAK,CAAC,YAAY,CAAC;QAHe,IAAA,CAAA,YAAY,GAAZ,YAAY;QACd,IAAA,CAAA,UAAU,GAAV,UAAU;;;uGAlVjC,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAiVX,cAAc,EAAA,EAAA,EAAA,KAAA,EACd,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAlVX,UAAU,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;0BAkVI,MAAM;2BAAC,cAAc;;0BACrB,MAAM;2BAAC,YAAY;;;AC3WlB,MAAO,UAAW,SAAQ,UAAwD,CAAA;AACtF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CACH;AACE,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,cAAc,EAAE,EAAE;AAClB,gBAAA,EAAE,EAAE,EAAE;AACN,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,YAAY,CAAC,iBAAiB;AAC1C,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA;AACD,YAAA,UAAU,EAAE,EAAE;AACf,SAAA,EACD,MAAM,CAAC,eAAe,CAAC,CACxB;;uGA1BQ,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAV,UAAU,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;ACOK,MAAO,WAAY,SAAQ,UAAyD,CAAA;AACxF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CACH;AACE,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,cAAc,EAAE,EAAE;AAClB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,YAAY,CAAC,iBAAiB;AAC1C,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA;AACD,YAAA,UAAU,EAAE,EAAE;AACf,SAAA,EACD,MAAM,CAAC,gBAAgB,CAAC,CACzB;;uGAzBQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACzCK,IAAW;AAAjB,CAAA,UAAiB,MAAM,EAAA;IAsBrB,MACa,WAAY,SAAQ,UAAmD,CAAA;AAClF,QAAA,WAAA,GAAA;AACE,YAAA,KAAK,CACH;AACE,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,MAAM,EAAE;AACN,oBAAA,UAAU,EAAE,SAAS;AACrB,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,OAAO,EAAE,SAAS;AACnB,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA;AACE,wBAAA,KAAK,EAAE,mBAAmB;wBAC1B,SAAS,EAAE,YAAY,CAAC,iBAAiB;AAC1C,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA;AACD,gBAAA,UAAU,EAAE,EAAE;AACf,aAAA,EACD,MAAM,CAAC,gBAAgB,CAAC,CACzB;;2GAtBQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;+GAAX,WAAW,EAAA,CAAA;;AAAX,IAAA,MAAA,CAAA,WAAW,cAwBvB;AACH,CAAC,EAhDgB,MAAM,KAAN,MAAM,GAAA,EAAA,CAAA,CAAA;;MCUV,aAAa,CAAA;AAChB,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,KAAK,GAAG,MAAM,EAAC,KAA0B,EAAC;AAElD,IAAA,iBAAiB,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,EACtCC,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,EACxE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,KAAI;QACrC,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;AAE7D,YAAA,OAAO,QAAQ,CAAC;AACd,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3C,gBAAA,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AACnC,gBAAA,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;AACtD,aAAA,CAAC,CAAC,IAAI,CACL,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,KAAI;AAC1C,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO;AACpC,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CACrD,QAAQ,CAAC,CAAC,KAAK,KAAK;oBAClB,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnD,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;oBACvC,aAAa,CAAC,eAAe,CAAC;wBAC5B,YAAY,EAAE,YAAY,CAAC,IAAI;qBAChC,CAAC;oBACF,aAAa,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;oBACpD,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACjD,iBAAA,CAAC,CACH;AACH,aAAC,CAAC,EACFD,YAAU,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,EACzD,QAAQ,CAAC,MAAK;gBACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;aAC9D,CAAC,CACH;;AAEH,QAAA,OAAO,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;KAC/C,CAAC,CACH,CACF;uGA3CU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAb,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACOM,MAAM,YAAY,GAAkB;AACzC,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,gBAAgB,EAAE,CAAC;AACnB,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,IAAI;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,YAAY,EAAE,SAAS;;;AC1BlB,MAAM,aAAa,GAAG,aAAa,CACxC,YAAY,EACZ,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,KAAK,MAAM;AAC1C,IAAA,GAAG,KAAK;AACR,IAAA,SAAS,EAAE,IAAI;AAChB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM;AAClE,IAAA,GAAG,KAAK;IACR,eAAe;AAChB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM;AACpD,IAAA,GAAG,KAAK;IACR,OAAO;AACR,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC,KAAK,MAAM;AACrD,IAAA,GAAG,KAAK;AACR,IAAA,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC;AAC7C,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC,KAAK,MAAM;AACrD,IAAA,GAAG,KAAK;AACR,IAAA,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM;AAC5C,IAAA,GAAG,KAAK;IACR,GAAG;AACJ,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM;AAC9D,IAAA,GAAG,KAAK;IACR,YAAY;AACb,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,KAAK,MAAM;AAC3C,IAAA,GAAG,KAAK;AACR,IAAA,cAAc,EAAE,CAAC,KAAK,CAAC,cAAc;AACtC,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,KAAK,MAAM;AAC1C,IAAA,GAAG,KAAK;AACR,IAAA,cAAc,EAAE,KAAK;AACtB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM;AACtD,IAAA,GAAG,KAAK;IACR,QAAQ;AACT,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM;AACvD,IAAA,GAAG,KAAK;AACR,IAAA,YAAY,EAAE,KAAK;CACpB,CAAC,CAAC;;ACjDL;;AAEG;;ACFH;;AAEG;;;;"}
Binary file
package/index.d.ts CHANGED
@@ -233,8 +233,7 @@ declare namespace Member {
233
233
  username?: string;
234
234
  role?: string;
235
235
  type?: string;
236
- lastName?: string;
237
- firstName?: string;
236
+ fullName?: string;
238
237
  nickname: string;
239
238
  mobile?: string;
240
239
  email?: string;
@@ -422,9 +421,9 @@ declare class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {
422
421
  private globalApiService;
423
422
  private groupApiService;
424
423
  private store;
425
- setAuthenticated$: rxjs.Observable<_ngrx_store.Action<"[Global] Clear Authentication"> | ({
424
+ setAuthenticated$: rxjs.Observable<({
426
425
  initiated: boolean;
427
- } & _ngrx_store.Action<"[Global] Mark Initiated">) | ({
426
+ } & _ngrx_store.Action<"[Global] Mark Initiated">) | _ngrx_store.Action<"[Global] Clear Authentication"> | ({
428
427
  profile: Member.IData & {
429
428
  [key: string]: any;
430
429
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haloduck/core",
3
- "version": "2.0.9",
3
+ "version": "2.0.10",
4
4
  "description": "HaloDuck Core Library - Angular",
5
5
  "keywords": [
6
6
  "angular",