cloud-ide-layout 1.0.8 → 1.0.9

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.
Files changed (83) hide show
  1. package/README.md +34 -448
  2. package/fesm2022/{cloud-ide-layout-cloud-ide-layout-D3xzVSNA.mjs → cloud-ide-layout-cloud-ide-layout-DLceZY3Y.mjs} +335 -343
  3. package/fesm2022/{cloud-ide-layout-cloud-ide-layout-D3xzVSNA.mjs.map → cloud-ide-layout-cloud-ide-layout-DLceZY3Y.mjs.map} +1 -1
  4. package/fesm2022/{cloud-ide-layout-drawer-theme.component-BSUFE_o2.mjs → cloud-ide-layout-drawer-theme.component-Bn5--C_Q.mjs} +69 -67
  5. package/fesm2022/{cloud-ide-layout-drawer-theme.component-BSUFE_o2.mjs.map → cloud-ide-layout-drawer-theme.component-Bn5--C_Q.mjs.map} +1 -1
  6. package/fesm2022/{cloud-ide-layout-home-wrapper.component-Dr4MO4MB.mjs → cloud-ide-layout-home-wrapper.component-Bo-4LNLx.mjs} +56 -51
  7. package/fesm2022/{cloud-ide-layout-home-wrapper.component-Dr4MO4MB.mjs.map → cloud-ide-layout-home-wrapper.component-Bo-4LNLx.mjs.map} +1 -1
  8. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BWx03JYS.mjs → cloud-ide-layout-sidedrawer-notes.component-BmadMzdl.mjs} +28 -32
  9. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BWx03JYS.mjs.map → cloud-ide-layout-sidedrawer-notes.component-BmadMzdl.mjs.map} +1 -1
  10. package/fesm2022/cloud-ide-layout.mjs +1 -1
  11. package/index.d.ts +579 -3
  12. package/package.json +3 -5
  13. package/esm2022/cloud-ide-layout.mjs +0 -5
  14. package/esm2022/lib/cloud-ide-layout.component.mjs +0 -16
  15. package/esm2022/lib/cloud-ide-layout.routes.mjs +0 -28
  16. package/esm2022/lib/cloud-ide-layout.service.mjs +0 -14
  17. package/esm2022/lib/layout/console/console-wrapper/console-wrapper.component.mjs +0 -11
  18. package/esm2022/lib/layout/console/console.service.mjs +0 -28
  19. package/esm2022/lib/layout/footer/footer-wrapper/footer-wrapper.component.mjs +0 -20
  20. package/esm2022/lib/layout/footer/footer.service.mjs +0 -28
  21. package/esm2022/lib/layout/header/header-wrapper/header-wrapper.component.mjs +0 -84
  22. package/esm2022/lib/layout/header/header.service.mjs +0 -28
  23. package/esm2022/lib/layout/home/home-wrapper/home-wrapper.component.mjs +0 -198
  24. package/esm2022/lib/layout/layout/layout-wrapper/layout-wrapper.component.mjs +0 -28
  25. package/esm2022/lib/layout/request/request-wrapper/request-wrapper.component.mjs +0 -60
  26. package/esm2022/lib/layout/request/request.service.mjs +0 -235
  27. package/esm2022/lib/layout/request/tab-content/tab-content.component.mjs +0 -84
  28. package/esm2022/lib/layout/shared/shared-wrapper/shared-wrapper.component.mjs +0 -49
  29. package/esm2022/lib/layout/shared/shared.service.mjs +0 -508
  30. package/esm2022/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.mjs +0 -488
  31. package/esm2022/lib/layout/sidebar/sidebar.service.mjs +0 -35
  32. package/esm2022/lib/layout/sidedrawer/cide-lyt-drawer-base.class.mjs +0 -40
  33. package/esm2022/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.mjs +0 -296
  34. package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.mjs +0 -175
  35. package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.mjs +0 -51
  36. package/esm2022/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.mjs +0 -257
  37. package/esm2022/lib/layout/sidedrawer/sidedrawer.service.mjs +0 -70
  38. package/esm2022/lib/services/app-state/app-state-helper.service.mjs +0 -222
  39. package/esm2022/lib/services/app-state/app-state.service.mjs +0 -256
  40. package/esm2022/lib/services/app-state/index.mjs +0 -3
  41. package/esm2022/lib/services/cache-manager/cache-manager.service.mjs +0 -112
  42. package/esm2022/lib/services/file-manager/file-manager.service.mjs +0 -21
  43. package/esm2022/lib/services/tab-state.service.mjs +0 -128
  44. package/esm2022/lib/services/theme/theme.service.mjs +0 -151
  45. package/esm2022/lib/services/user-status/user-status.service.mjs +0 -135
  46. package/esm2022/lib/utils/custom-route-reuse-strategy.mjs +0 -61
  47. package/esm2022/lib/utils/index.mjs +0 -2
  48. package/esm2022/public-api.mjs +0 -18
  49. package/lib/cloud-ide-layout.component.d.ts +0 -5
  50. package/lib/cloud-ide-layout.routes.d.ts +0 -3
  51. package/lib/cloud-ide-layout.service.d.ts +0 -6
  52. package/lib/layout/console/console-wrapper/console-wrapper.component.d.ts +0 -5
  53. package/lib/layout/console/console.service.d.ts +0 -9
  54. package/lib/layout/footer/footer-wrapper/footer-wrapper.component.d.ts +0 -9
  55. package/lib/layout/footer/footer.service.d.ts +0 -9
  56. package/lib/layout/header/header-wrapper/header-wrapper.component.d.ts +0 -25
  57. package/lib/layout/header/header.service.d.ts +0 -9
  58. package/lib/layout/home/home-wrapper/home-wrapper.component.d.ts +0 -94
  59. package/lib/layout/layout/layout-wrapper/layout-wrapper.component.d.ts +0 -5
  60. package/lib/layout/request/request-wrapper/request-wrapper.component.d.ts +0 -14
  61. package/lib/layout/request/request.service.d.ts +0 -60
  62. package/lib/layout/request/tab-content/tab-content.component.d.ts +0 -19
  63. package/lib/layout/shared/shared-wrapper/shared-wrapper.component.d.ts +0 -17
  64. package/lib/layout/shared/shared.service.d.ts +0 -114
  65. package/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.d.ts +0 -140
  66. package/lib/layout/sidebar/sidebar.service.d.ts +0 -12
  67. package/lib/layout/sidedrawer/cide-lyt-drawer-base.class.d.ts +0 -16
  68. package/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.d.ts +0 -71
  69. package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.d.ts +0 -48
  70. package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.d.ts +0 -13
  71. package/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.d.ts +0 -30
  72. package/lib/layout/sidedrawer/sidedrawer.service.d.ts +0 -30
  73. package/lib/services/app-state/app-state-helper.service.d.ts +0 -150
  74. package/lib/services/app-state/app-state.service.d.ts +0 -85
  75. package/lib/services/app-state/index.d.ts +0 -3
  76. package/lib/services/cache-manager/cache-manager.service.d.ts +0 -64
  77. package/lib/services/file-manager/file-manager.service.d.ts +0 -9
  78. package/lib/services/tab-state.service.d.ts +0 -79
  79. package/lib/services/theme/theme.service.d.ts +0 -71
  80. package/lib/services/user-status/user-status.service.d.ts +0 -57
  81. package/lib/utils/custom-route-reuse-strategy.d.ts +0 -15
  82. package/lib/utils/index.d.ts +0 -1
  83. package/public-api.d.ts +0 -12
package/index.d.ts CHANGED
@@ -1,5 +1,581 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnInit, InjectionToken } from '@angular/core';
3
+ import { IUser, menuResponseData, ICoreSyen, designConfigResponseData, designConfigControllerResponse, ISytmLayout, MDesignConfig, IEnvironmentConfig, SystemThemeControllerRespoonse, SystemThemesListControllerRespoonse, MSystemThemeUserPreferencesRequest, SystemThemeUserPreferencesControllerRespoonse } from 'cloud-ide-lms-model';
4
+ import * as rxjs from 'rxjs';
5
+ import { Observable } from 'rxjs';
6
+ import { Title } from '@angular/platform-browser';
7
+ import { Route, RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';
8
+
9
+ declare class CloudIdeLayoutService {
10
+ constructor();
11
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CloudIdeLayoutService, never>;
12
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CloudIdeLayoutService>;
13
+ }
14
+
15
+ declare class CloudIdeLayoutComponent {
16
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CloudIdeLayoutComponent, never>;
17
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CloudIdeLayoutComponent, "cide-lyt-wrapper", never, {}, {}, never, never, true, never>;
18
+ }
19
+
20
+ declare class AppStateHelperService {
21
+ private appStateService;
22
+ private sidebarService;
23
+ readonly currentUser: _angular_core.Signal<IUser | null>;
24
+ readonly isAuthenticated: _angular_core.Signal<boolean>;
25
+ readonly userInfo: _angular_core.Signal<{
26
+ id: string | undefined;
27
+ name: string;
28
+ email: string | undefined;
29
+ role: string | undefined;
30
+ } | null>;
31
+ readonly activeModule: _angular_core.Signal<menuResponseData | null>;
32
+ readonly activeModuleInfo: _angular_core.Signal<{
33
+ id: string;
34
+ title: string;
35
+ icon: string;
36
+ path: string;
37
+ type: string;
38
+ } | null>;
39
+ readonly activeEntity: _angular_core.Signal<ICoreSyen | null>;
40
+ /**
41
+ * Get current user value (non-reactive)
42
+ */
43
+ getCurrentUser(): IUser | null;
44
+ /**
45
+ * Set user data
46
+ */
47
+ setUser(user: IUser | null): void;
48
+ /**
49
+ * Update user data (partial update)
50
+ */
51
+ updateUser(updates: Partial<IUser>): void;
52
+ /**
53
+ * Clear user data
54
+ */
55
+ clearUser(): void;
56
+ /**
57
+ * Check if user is authenticated
58
+ */
59
+ isUserAuthenticated(): boolean;
60
+ /**
61
+ * Get user info object
62
+ */
63
+ getUserInfo(): {
64
+ id: string | undefined;
65
+ name: string;
66
+ email: string | undefined;
67
+ role: string | undefined;
68
+ } | null;
69
+ /**
70
+ * Get user ID
71
+ */
72
+ getUserId(): string | null;
73
+ /**
74
+ * Get user name
75
+ */
76
+ getUserName(): string | null;
77
+ /**
78
+ * Get user email
79
+ */
80
+ getUserEmail(): string | null;
81
+ /**
82
+ * Get user username
83
+ */
84
+ getUserUsername(): string | null;
85
+ /**
86
+ * Get user full name
87
+ */
88
+ getUserFullName(): string | null;
89
+ /**
90
+ * Get user first name
91
+ */
92
+ getUserFirstName(): string | null;
93
+ /**
94
+ * Get user last name
95
+ */
96
+ getUserLastName(): string | null;
97
+ /**
98
+ * Get user mobile number
99
+ */
100
+ getUserMobile(): number | null;
101
+ /**
102
+ * Set the active module
103
+ */
104
+ setActiveModule(module: menuResponseData | null): void;
105
+ /**
106
+ * Get active module value (non-reactive)
107
+ */
108
+ getActiveModule(): menuResponseData | null;
109
+ /**
110
+ * Get active module info
111
+ */
112
+ getActiveModuleInfo(): {
113
+ id: string;
114
+ title: string;
115
+ icon: string;
116
+ path: string;
117
+ type: string;
118
+ } | null;
119
+ /**
120
+ * Get active module ID
121
+ */
122
+ getActiveModuleId(): string | null;
123
+ /**
124
+ * Get active module title
125
+ */
126
+ getActiveModuleTitle(): string | null;
127
+ /**
128
+ * Get active module icon
129
+ */
130
+ getActiveModuleIcon(): string | null;
131
+ /**
132
+ * Set a module as active by its ID
133
+ * This replaces the previous isModuleActive method to use setActiveModule instead of getActiveModuleId
134
+ */
135
+ setActiveModuleById(moduleId: string): Observable<boolean>;
136
+ /**
137
+ * Check if a module is active (keeping the original functionality for backward compatibility)
138
+ */
139
+ isModuleActive(moduleId: string): boolean;
140
+ /**
141
+ * Set the active entity
142
+ */
143
+ setActiveEntity(entity: ICoreSyen | null): void;
144
+ /**
145
+ * Get active entity value (non-reactive)
146
+ */
147
+ getActiveEntity(): ICoreSyen | null;
148
+ /**
149
+ * Get active entity ID
150
+ */
151
+ getActiveEntityId(): string;
152
+ /**
153
+ * Get active entity name
154
+ */
155
+ getActiveEntityName(): string | null;
156
+ /**
157
+ * Get active entity code
158
+ */
159
+ getActiveEntityCode(): string | null;
160
+ /**
161
+ * Manually refresh state from localStorage
162
+ */
163
+ refreshFromLocalStorage(): void;
164
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppStateHelperService, never>;
165
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AppStateHelperService>;
166
+ }
167
+
168
+ declare class CideLytSharedWrapperComponent implements OnInit {
169
+ shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam>;
170
+ page_data: designConfigResponseData;
171
+ private sharedService;
172
+ private sidedrawerService;
173
+ protected appState: AppStateHelperService;
174
+ ngOnInit(): void;
175
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytSharedWrapperComponent, never>;
176
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideLytSharedWrapperComponent, "cide-lyt-shared-wrapper", never, {}, {}, never, never, true, never>;
177
+ }
178
+ interface CideLytSharedWrapperSetupParam {
179
+ sypg_page_code: string;
180
+ }
181
+
182
+ interface CachedPageData {
183
+ request: Partial<CideLytSharedWrapperSetupParam>;
184
+ response: designConfigControllerResponse;
185
+ timestamp: number;
186
+ ttl: number;
187
+ }
188
+ declare class CideLytSharedService {
189
+ private pageDataCacheSignal;
190
+ private loadingStateSignal;
191
+ readonly pageDataCache: _angular_core.Signal<{
192
+ [key: string]: CachedPageData;
193
+ }>;
194
+ readonly loadingStates: _angular_core.Signal<{
195
+ [key: string]: boolean;
196
+ }>;
197
+ readonly cacheInfo: _angular_core.Signal<{
198
+ totalCached: number;
199
+ validCached: number;
200
+ expiredCached: number;
201
+ }>;
202
+ private inflightRequests;
203
+ private readonly DEFAULT_CACHE_TTL;
204
+ private elementService;
205
+ private http;
206
+ titleService: Title;
207
+ private sidebarService;
208
+ private headerService;
209
+ private footerService;
210
+ private consoleService;
211
+ private sidedrawerService;
212
+ private router;
213
+ private appState;
214
+ private routeSubscription?;
215
+ private pageDataSubscription?;
216
+ private tabManagementCallback?;
217
+ private requestVisibilityCallback?;
218
+ constructor();
219
+ /**
220
+ * Register tab management callback from request service
221
+ * This allows shared service to call request service without circular dependency
222
+ */
223
+ registerTabManagement(callback: (currentRoutePath: string, queryParams: Record<string, unknown>, layout: ISytmLayout, pageData: designConfigControllerResponse, pageCode: string) => void): void;
224
+ /**
225
+ * Register request visibility callback from request service
226
+ * This allows shared service to control request wrapper visibility
227
+ */
228
+ registerRequestVisibility(callback: (show: boolean) => void): void;
229
+ /**
230
+ * Enhanced loadPageData with caching and deduplication
231
+ * @param body - Request payload
232
+ * @param forceRefresh - Force API call even if cached data exists
233
+ * @param customTTL - Custom cache TTL in milliseconds
234
+ */
235
+ loadPageData(body: MDesignConfig, forceRefresh?: boolean, customTTL?: number): Observable<designConfigControllerResponse>;
236
+ /**
237
+ * Consolidated method to load and process page data
238
+ * This replaces the separate calls in request service and shared wrapper
239
+ */
240
+ loadAndProcessPageData(body: MDesignConfig, options?: {
241
+ forceRefresh?: boolean;
242
+ customTTL?: number;
243
+ setTitle?: boolean;
244
+ setSidebarContext?: boolean;
245
+ updateLayout?: boolean;
246
+ }): Observable<designConfigControllerResponse>;
247
+ /**
248
+ * Get cached page data without making API call
249
+ */
250
+ getCachedPageData(pageCode: string): designConfigControllerResponse | null;
251
+ /**
252
+ * Check if loading for a specific page code
253
+ */
254
+ isLoading(pageCode: string): boolean;
255
+ /**
256
+ * Invalidate cache for specific page code
257
+ */
258
+ invalidateCache(pageCode: string): void;
259
+ /**
260
+ * Clear all cached data
261
+ */
262
+ clearAllCache(): void;
263
+ /**
264
+ * Preload page data for better performance
265
+ */
266
+ preloadPageData(pageCodes: string[]): void;
267
+ private hasValidCache;
268
+ private isCacheValid;
269
+ private cachePageData;
270
+ private setLoadingState;
271
+ private cleanExpiredCache;
272
+ setPageData(page_data_response: designConfigControllerResponse, page_data_payload: Partial<CideLytSharedWrapperSetupParam>): void;
273
+ /**
274
+ * Handle route changes - moved from request service for better architecture
275
+ * This method loads page data and calls request service to manage tabs
276
+ */
277
+ private handleRouteChange;
278
+ /**
279
+ * Handle tab request by calling request service
280
+ */
281
+ private handleTabRequest;
282
+ /**
283
+ * Sync the active menu in the sidebar based on the loaded page data.
284
+ * This ensures the correct module is highlighted in the sidebar.
285
+ */
286
+ private syncSidebarActiveMenu;
287
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytSharedService, never>;
288
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytSharedService>;
289
+ }
290
+
291
+ declare const layoutRoutes: Route;
292
+ declare const layoutControlPannelChildRoutes: Route[];
293
+
1
294
  /**
2
- * Generated bundle index. Do not edit.
295
+ * A custom route reuse strategy that allows storing and retrieving routes
296
+ * to persist component state, especially for tabbed navigation.
3
297
  */
4
- /// <amd-module name="cloud-ide-layout" />
5
- export * from './public-api';
298
+ declare class CustomRouteReuseStrategy implements RouteReuseStrategy {
299
+ private storedRoutes;
300
+ private getPathKey;
301
+ shouldDetach(route: ActivatedRouteSnapshot): boolean;
302
+ store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle | null): void;
303
+ shouldAttach(route: ActivatedRouteSnapshot): boolean;
304
+ retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null;
305
+ shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean;
306
+ clearStoredRoute(pathKey: string): void;
307
+ }
308
+
309
+ interface AppState {
310
+ currentUser: IUser | null;
311
+ activeModule: menuResponseData | null;
312
+ activeEntity: ICoreSyen | null;
313
+ }
314
+ declare class AppStateService {
315
+ private currentUserSignal;
316
+ private activeModuleSignal;
317
+ private activeEntitySignal;
318
+ readonly currentUser: _angular_core.Signal<IUser | null>;
319
+ readonly activeModule: _angular_core.Signal<menuResponseData | null>;
320
+ readonly activeEntity: _angular_core.Signal<ICoreSyen | null>;
321
+ readonly isAuthenticated: _angular_core.Signal<boolean>;
322
+ readonly userInfo: _angular_core.Signal<{
323
+ id: string | undefined;
324
+ name: string;
325
+ email: string | undefined;
326
+ role: string | undefined;
327
+ } | null>;
328
+ readonly activeModuleInfo: _angular_core.Signal<{
329
+ id: string;
330
+ title: string;
331
+ icon: string;
332
+ path: string;
333
+ type: string;
334
+ } | null>;
335
+ constructor();
336
+ /**
337
+ * Set the current user
338
+ */
339
+ setUser(user: IUser | null): void;
340
+ /**
341
+ * Update user data (partial update)
342
+ */
343
+ updateUser(updates: Partial<IUser>): void;
344
+ /**
345
+ * Clear user data
346
+ */
347
+ clearUser(): void;
348
+ /**
349
+ * Get current user value (non-reactive)
350
+ */
351
+ getUserValue(): IUser | null;
352
+ /**
353
+ * Set the active module
354
+ */
355
+ setActiveModule(module: menuResponseData | null): void;
356
+ /**
357
+ * Get active module value (non-reactive)
358
+ */
359
+ getActiveModuleValue(): menuResponseData | null;
360
+ /**
361
+ * Set the active entity
362
+ */
363
+ setActiveEntity(entity: ICoreSyen | null): void;
364
+ /**
365
+ * Get active entity value (non-reactive)
366
+ */
367
+ getActiveEntityValue(): ICoreSyen | null;
368
+ /**
369
+ * Manually refresh state from localStorage
370
+ * Call this method when you need to sync with external localStorage changes
371
+ */
372
+ refreshFromLocalStorage(): void;
373
+ /**
374
+ * Check if localStorage is available (browser environment)
375
+ */
376
+ private isLocalStorageAvailable;
377
+ /**
378
+ * Save state to localStorage
379
+ */
380
+ private saveToLocalStorage;
381
+ /**
382
+ * Load state from localStorage
383
+ */
384
+ private loadFromLocalStorage;
385
+ /**
386
+ * Setup storage event listener to handle external localStorage changes
387
+ */
388
+ private setupStorageListener;
389
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppStateService, never>;
390
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AppStateService>;
391
+ }
392
+
393
+ type UserStatus = 'online' | 'offline' | 'away' | 'busy' | 'do-not-disturb';
394
+ interface UserStatusData {
395
+ status: UserStatus;
396
+ lastActive: Date;
397
+ message?: string;
398
+ }
399
+ declare class CideLytUserStatusService {
400
+ private _userStatus;
401
+ readonly userStatus: _angular_core.Signal<UserStatusData>;
402
+ readonly isOnline: _angular_core.Signal<boolean>;
403
+ readonly statusColor: _angular_core.Signal<string>;
404
+ readonly statusText: _angular_core.Signal<string>;
405
+ private statusSubject;
406
+ readonly status$: rxjs.Observable<UserStatusData>;
407
+ private lastActivityTime;
408
+ private autoAwayTimeout;
409
+ private autoAwayEnabled;
410
+ constructor();
411
+ /**
412
+ * Sets the user status
413
+ * @param status The new status to set
414
+ * @param message Optional custom status message
415
+ */
416
+ setStatus(status: UserStatus, message?: string): void;
417
+ /**
418
+ * Marks user as active (resets away timer)
419
+ */
420
+ markUserActive(): void;
421
+ /**
422
+ * Gets CSS class for status color
423
+ */
424
+ private getStatusColor;
425
+ /**
426
+ * Gets human-readable status text
427
+ */
428
+ private getStatusText;
429
+ private getBaseStatusText;
430
+ /**
431
+ * Initialize activity tracking for auto-away
432
+ */
433
+ private initializeActivityTracking;
434
+ /**
435
+ * Start the auto-away timer
436
+ */
437
+ private startAutoAwayTimer;
438
+ /**
439
+ * Enable or disable auto-away functionality
440
+ */
441
+ setAutoAwayEnabled(enabled: boolean): void;
442
+ /**
443
+ * Set the auto-away timeout (in milliseconds)
444
+ */
445
+ setAutoAwayTimeout(timeout: number): void;
446
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytUserStatusService, never>;
447
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytUserStatusService>;
448
+ }
449
+
450
+ declare const ENVIRONMENT_CONFIG: InjectionToken<IEnvironmentConfig>;
451
+ interface Theme {
452
+ [key: string]: string;
453
+ }
454
+ /**
455
+ * Utility function to convert database format keys to CSS format and handle units
456
+ * @param key - The database format key (e.g., 'font_size_xxxl')
457
+ * @param value - The value to be set
458
+ * @returns Object with cssVarName and processed value
459
+ */
460
+ declare function processThemeVariable(key: string, value: string): {
461
+ cssVarName: string;
462
+ processedValue: string;
463
+ };
464
+ /**
465
+ * Sets a single CSS variable on the document root element
466
+ * @param key - The database format key (e.g., 'font_size_xxxl')
467
+ * @param value - The value to be set
468
+ * @param platformId - Platform ID for browser check
469
+ */
470
+ declare function setCSSVariable(key: string, value: string, platformId: object): void;
471
+ declare class CideLytThemeService {
472
+ private selectedThemeSignal;
473
+ selectedTheme: _angular_core.Signal<string>;
474
+ private http;
475
+ private platformId;
476
+ private environment;
477
+ /**
478
+ * Fetches the theme from the API and applies it to the document.
479
+ * This method is intended to be called when the theme should actually be applied.
480
+ */
481
+ fetchAndApplyTheme(): Observable<SystemThemeControllerRespoonse>;
482
+ /**
483
+ * Fetches the list of system themes from the API.
484
+ */
485
+ fetchSystemThemesList(): Observable<SystemThemesListControllerRespoonse>;
486
+ /**
487
+ * Internal method to fetch the theme from the API and apply it.
488
+ */
489
+ loadTheme(): Observable<SystemThemeControllerRespoonse>;
490
+ /**
491
+ * Sets the CSS variables on the root element.
492
+ * @param theme - An object where keys are CSS variable names (e.g., '--color-text-body')
493
+ * and values are the color strings (e.g., '#ffffff').
494
+ */
495
+ private applyTheme;
496
+ /**
497
+ * Saves the system theme user preferences.
498
+ * @param themeVars - The theme variables to save.
499
+ * @returns An observable of the system theme user preferences.
500
+ */
501
+ saveSystemThemeUserPreferences(themeVars: MSystemThemeUserPreferencesRequest): Observable<SystemThemeUserPreferencesControllerRespoonse>;
502
+ /**
503
+ * Updates a single CSS variable using the utility function
504
+ * @param key - The database format key (e.g., 'font_size_xxxl')
505
+ * @param value - The value to be set
506
+ */
507
+ updateCSSVariable(key: string, value: string): void;
508
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytThemeService, never>;
509
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytThemeService>;
510
+ }
511
+ /**
512
+ * Factory function for APP_INITIALIZER.
513
+ * This function is used in your app.config.ts.
514
+ * It conditionally triggers theme loading based on the environment setting.
515
+ */
516
+ declare function themeFactory(themeService: CideLytThemeService, environmentConfig: IEnvironmentConfig): () => Observable<SystemThemeControllerRespoonse | undefined>;
517
+
518
+ declare class CacheManagerService {
519
+ private sharedService;
520
+ readonly cacheStats: _angular_core.Signal<{
521
+ hitRatio: number;
522
+ memoryEstimate: string;
523
+ totalCached: number;
524
+ validCached: number;
525
+ expiredCached: number;
526
+ }>;
527
+ readonly isLoading: (pageCode: string) => boolean;
528
+ readonly getCachedData: (pageCode: string) => designConfigControllerResponse | null;
529
+ /**
530
+ * Get page data with caching - this is the main method components should use
531
+ */
532
+ getPageData(pageCode: string, forceRefresh?: boolean): Observable<designConfigControllerResponse>;
533
+ /**
534
+ * Preload multiple pages for better performance
535
+ */
536
+ preloadPages(pageCodes: string[]): void;
537
+ /**
538
+ * Invalidate specific page cache
539
+ */
540
+ invalidatePage(pageCode: string): void;
541
+ /**
542
+ * Clear all cache
543
+ */
544
+ clearCache(): void;
545
+ /**
546
+ * Get cache status for debugging
547
+ */
548
+ getCacheStatus(): {
549
+ pageCode: string;
550
+ cached: boolean;
551
+ expired: boolean;
552
+ loading: boolean;
553
+ }[];
554
+ /**
555
+ * Estimate memory usage of cache (rough estimate)
556
+ */
557
+ private estimateCacheMemoryUsage;
558
+ /**
559
+ * Check if cache entry is valid
560
+ */
561
+ private isCacheValid;
562
+ /**
563
+ * Export cache data for debugging or backup
564
+ */
565
+ exportCacheData(): string;
566
+ /**
567
+ * Get performance metrics
568
+ */
569
+ getPerformanceMetrics(): {
570
+ totalPages: number;
571
+ cachedPages: number;
572
+ loadingPages: number;
573
+ cacheHitRatio: number;
574
+ averageResponseTime?: number;
575
+ };
576
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CacheManagerService, never>;
577
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CacheManagerService>;
578
+ }
579
+
580
+ export { AppStateHelperService, AppStateService, CacheManagerService, CideLytSharedService, CideLytSharedWrapperComponent, CideLytThemeService, CideLytUserStatusService, CloudIdeLayoutComponent, CloudIdeLayoutService, CustomRouteReuseStrategy, ENVIRONMENT_CONFIG, layoutControlPannelChildRoutes, layoutRoutes, processThemeVariable, setCSSVariable, themeFactory };
581
+ export type { AppState, CideLytSharedWrapperSetupParam, Theme, UserStatus, UserStatusData };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "cloud-ide-layout",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "peerDependencies": {
5
- "@angular/common": "^18.0.0",
6
- "@angular/core": "^18.0.0"
5
+ "@angular/common": "^20.1.0",
6
+ "@angular/core": "^20.1.0"
7
7
  },
8
8
  "dependencies": {
9
9
  "tslib": "^2.3.0"
@@ -16,8 +16,6 @@
16
16
  },
17
17
  ".": {
18
18
  "types": "./index.d.ts",
19
- "esm2022": "./esm2022/cloud-ide-layout.mjs",
20
- "esm": "./esm2022/cloud-ide-layout.mjs",
21
19
  "default": "./fesm2022/cloud-ide-layout.mjs"
22
20
  }
23
21
  },
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtaWRlLWxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1sYXlvdXQvc3JjL2Nsb3VkLWlkZS1sYXlvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,16 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { CideLytLayoutWrapperComponent } from "./layout/layout/layout-wrapper/layout-wrapper.component";
3
- import * as i0 from "@angular/core";
4
- export class CloudIdeLayoutComponent {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CloudIdeLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CloudIdeLayoutComponent, isStandalone: true, selector: "cide-lyt-wrapper", ngImport: i0, template: `
7
- <cide-lyt-layout-wrapper></cide-lyt-layout-wrapper>
8
- `, isInline: true, styles: [""], dependencies: [{ kind: "component", type: CideLytLayoutWrapperComponent, selector: "cide-lyt-layout-wrapper" }] }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CloudIdeLayoutComponent, decorators: [{
11
- type: Component,
12
- args: [{ selector: 'cide-lyt-wrapper', standalone: true, template: `
13
- <cide-lyt-layout-wrapper></cide-lyt-layout-wrapper>
14
- `, imports: [CideLytLayoutWrapperComponent] }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtaWRlLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtbGF5b3V0L3NyYy9saWIvY2xvdWQtaWRlLWxheW91dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7QUFXeEcsTUFBTSxPQUFPLHVCQUF1Qjs4R0FBdkIsdUJBQXVCO2tHQUF2Qix1QkFBdUIsNEVBTnhCOztHQUVULDBFQUVTLDZCQUE2Qjs7MkZBRTVCLHVCQUF1QjtrQkFUbkMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxZQUNOOztHQUVULFdBRVEsQ0FBQyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaWRlTHl0TGF5b3V0V3JhcHBlckNvbXBvbmVudCB9IGZyb20gXCIuL2xheW91dC9sYXlvdXQvbGF5b3V0LXdyYXBwZXIvbGF5b3V0LXdyYXBwZXIuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NpZGUtbHl0LXdyYXBwZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjaWRlLWx5dC1sYXlvdXQtd3JhcHBlcj48L2NpZGUtbHl0LWxheW91dC13cmFwcGVyPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBgYCxcclxuICBpbXBvcnRzOiBbQ2lkZUx5dExheW91dFdyYXBwZXJDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbG91ZElkZUxheW91dENvbXBvbmVudCB7XHJcblxyXG59XHJcbiJdfQ==
@@ -1,28 +0,0 @@
1
- export const layoutRoutes = {
2
- path: "control-panel",
3
- loadComponent: () => import('./cloud-ide-layout.component').then(c => c.CloudIdeLayoutComponent),
4
- // canActivate: [authGuard]
5
- };
6
- export const layoutControlPannelChildRoutes = [{
7
- path: "",
8
- pathMatch: "full",
9
- redirectTo: "home"
10
- },
11
- {
12
- path: "home",
13
- loadComponent: () => import('./layout/home/home-wrapper/home-wrapper.component').then(c => c.CideLytHomeWrapperComponent),
14
- data: {
15
- reuseTab: true, // For CustomRouteReuseStrategy
16
- sypg_page_code: "cide_lyt_home" // Used by RequestService to fetch tab properties
17
- }
18
- }];
19
- // {
20
- // path: "admin-home",
21
- // loadComponent: () => import('../../../cloud-ide-admin/src/lib/admin-module/home/home-wrapper/cide-adm-home-wrapper.component').then(c => c.CideAdmHomeWrapperComponent),
22
- // data: {
23
- // reuseTab: true, // For CustomRouteReuseStrategy
24
- // sypg_page_code: "cide_adm_home" // Example: Ensure this page code is configured in your backend
25
- // }
26
- // }];
27
- // ]
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtaWRlLWxheW91dC5yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtbGF5b3V0L3NyYy9saWIvY2xvdWQtaWRlLWxheW91dC5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFVO0lBQy9CLElBQUksRUFBRSxlQUFlO0lBQ3JCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7SUFDaEcsMkJBQTJCO0NBQzlCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBWSxDQUFDO1FBQ3BELElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLE1BQU07UUFDakIsVUFBVSxFQUFFLE1BQU07S0FDckI7SUFDRDtRQUNJLElBQUksRUFBRSxNQUFNO1FBQ1osYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtREFBbUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUN6SCxJQUFJLEVBQUU7WUFDRixRQUFRLEVBQUUsSUFBSSxFQUFFLCtCQUErQjtZQUMvQyxjQUFjLEVBQUUsZUFBZSxDQUFDLGlEQUFpRDtTQUNwRjtLQUNKLENBQUMsQ0FBQztBQUNILElBQUk7QUFDSiwwQkFBMEI7QUFDMUIsK0tBQStLO0FBQy9LLGNBQWM7QUFDZCwwREFBMEQ7QUFDMUQsMEdBQTBHO0FBQzFHLFFBQVE7QUFDUixNQUFNO0FBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmV4cG9ydCBjb25zdCBsYXlvdXRSb3V0ZXM6IFJvdXRlID0ge1xyXG4gICAgcGF0aDogXCJjb250cm9sLXBhbmVsXCIsXHJcbiAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vY2xvdWQtaWRlLWxheW91dC5jb21wb25lbnQnKS50aGVuKGMgPT4gYy5DbG91ZElkZUxheW91dENvbXBvbmVudCksXHJcbiAgICAvLyBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBsYXlvdXRDb250cm9sUGFubmVsQ2hpbGRSb3V0ZXM6IFJvdXRlW10gPSBbe1xyXG4gICAgcGF0aDogXCJcIixcclxuICAgIHBhdGhNYXRjaDogXCJmdWxsXCIsXHJcbiAgICByZWRpcmVjdFRvOiBcImhvbWVcIlxyXG59LFxyXG57XHJcbiAgICBwYXRoOiBcImhvbWVcIixcclxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9sYXlvdXQvaG9tZS9ob21lLXdyYXBwZXIvaG9tZS13cmFwcGVyLmNvbXBvbmVudCcpLnRoZW4oYyA9PiBjLkNpZGVMeXRIb21lV3JhcHBlckNvbXBvbmVudCksXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgICAgcmV1c2VUYWI6IHRydWUsIC8vIEZvciBDdXN0b21Sb3V0ZVJldXNlU3RyYXRlZ3lcclxuICAgICAgICBzeXBnX3BhZ2VfY29kZTogXCJjaWRlX2x5dF9ob21lXCIgLy8gVXNlZCBieSBSZXF1ZXN0U2VydmljZSB0byBmZXRjaCB0YWIgcHJvcGVydGllc1xyXG4gICAgfVxyXG59XTtcclxuLy8ge1xyXG4vLyAgICAgcGF0aDogXCJhZG1pbi1ob21lXCIsXHJcbi8vICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4uLy4uLy4uL2Nsb3VkLWlkZS1hZG1pbi9zcmMvbGliL2FkbWluLW1vZHVsZS9ob21lL2hvbWUtd3JhcHBlci9jaWRlLWFkbS1ob21lLXdyYXBwZXIuY29tcG9uZW50JykudGhlbihjID0+IGMuQ2lkZUFkbUhvbWVXcmFwcGVyQ29tcG9uZW50KSxcclxuLy8gICAgIGRhdGE6IHtcclxuLy8gICAgICAgICByZXVzZVRhYjogdHJ1ZSwgLy8gRm9yIEN1c3RvbVJvdXRlUmV1c2VTdHJhdGVneVxyXG4vLyAgICAgICAgIHN5cGdfcGFnZV9jb2RlOiBcImNpZGVfYWRtX2hvbWVcIiAvLyBFeGFtcGxlOiBFbnN1cmUgdGhpcyBwYWdlIGNvZGUgaXMgY29uZmlndXJlZCBpbiB5b3VyIGJhY2tlbmRcclxuLy8gICAgIH1cclxuLy8gfV07XHJcbi8vIF0gICJdfQ==
@@ -1,14 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class CloudIdeLayoutService {
4
- constructor() { }
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CloudIdeLayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CloudIdeLayoutService, providedIn: 'root' }); }
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CloudIdeLayoutService, decorators: [{
9
- type: Injectable,
10
- args: [{
11
- providedIn: 'root'
12
- }]
13
- }], ctorParameters: () => [] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtaWRlLWxheW91dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWxheW91dC9zcmMvbGliL2Nsb3VkLWlkZS1sYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLGdCQUFnQixDQUFDOzhHQUZOLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbG91ZElkZUxheW91dFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiJdfQ==