cloud-ide-layout 0.0.1 → 1.0.0

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 (79) hide show
  1. package/README.md +466 -13
  2. package/esm2022/lib/cloud-ide-layout.routes.mjs +24 -10
  3. package/esm2022/lib/layout/console/console-wrapper/console-wrapper.component.mjs +6 -6
  4. package/esm2022/lib/layout/console/console.service.mjs +28 -0
  5. package/esm2022/lib/layout/footer/footer-wrapper/footer-wrapper.component.mjs +16 -8
  6. package/esm2022/lib/layout/footer/footer.service.mjs +28 -0
  7. package/esm2022/lib/layout/header/header-wrapper/header-wrapper.component.mjs +69 -18
  8. package/esm2022/lib/layout/header/header.service.mjs +17 -6
  9. package/esm2022/lib/layout/home/home-wrapper/home-wrapper.component.mjs +194 -7
  10. package/esm2022/lib/layout/layout/layout-wrapper/layout-wrapper.component.mjs +18 -9
  11. package/esm2022/lib/layout/request/request-wrapper/request-wrapper.component.mjs +54 -6
  12. package/esm2022/lib/layout/request/request.service.mjs +235 -0
  13. package/esm2022/lib/layout/request/tab-content/tab-content.component.mjs +84 -0
  14. package/esm2022/lib/layout/shared/shared-wrapper/shared-wrapper.component.mjs +32 -20
  15. package/esm2022/lib/layout/shared/shared.service.mjs +490 -14
  16. package/esm2022/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.mjs +480 -15
  17. package/esm2022/lib/layout/sidebar/sidebar.service.mjs +20 -7
  18. package/esm2022/lib/layout/sidedrawer/cide-lyt-drawer-base.class.mjs +40 -0
  19. package/esm2022/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.mjs +296 -0
  20. package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.mjs +175 -0
  21. package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.mjs +51 -0
  22. package/esm2022/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.mjs +254 -9
  23. package/esm2022/lib/layout/sidedrawer/sidedrawer.service.mjs +70 -0
  24. package/esm2022/lib/services/app-state/app-state-helper.service.mjs +222 -0
  25. package/esm2022/lib/services/app-state/app-state.service.mjs +256 -0
  26. package/esm2022/lib/services/app-state/index.mjs +3 -0
  27. package/esm2022/lib/services/cache-manager/cache-manager.service.mjs +112 -0
  28. package/esm2022/lib/services/file-manager/file-manager.service.mjs +7 -7
  29. package/esm2022/lib/services/tab-state.service.mjs +128 -0
  30. package/esm2022/lib/services/theme/theme.service.mjs +151 -0
  31. package/esm2022/lib/services/user-status/user-status.service.mjs +135 -0
  32. package/esm2022/lib/utils/custom-route-reuse-strategy.mjs +61 -0
  33. package/esm2022/public-api.mjs +6 -1
  34. package/fesm2022/cloud-ide-layout-cloud-ide-layout-CW1h3qH0.mjs +2914 -0
  35. package/fesm2022/cloud-ide-layout-cloud-ide-layout-CW1h3qH0.mjs.map +1 -0
  36. package/fesm2022/cloud-ide-layout-drawer-theme.component-CoOmLWB_.mjs +443 -0
  37. package/fesm2022/cloud-ide-layout-drawer-theme.component-CoOmLWB_.mjs.map +1 -0
  38. package/fesm2022/cloud-ide-layout-home-wrapper.component-CBqNAcEP.mjs +197 -0
  39. package/fesm2022/cloud-ide-layout-home-wrapper.component-CBqNAcEP.mjs.map +1 -0
  40. package/fesm2022/cloud-ide-layout-sidedrawer-notes.component-cZtT-79M.mjs +260 -0
  41. package/fesm2022/cloud-ide-layout-sidedrawer-notes.component-cZtT-79M.mjs.map +1 -0
  42. package/fesm2022/cloud-ide-layout.mjs +1 -261
  43. package/fesm2022/cloud-ide-layout.mjs.map +1 -1
  44. package/lib/cloud-ide-layout.routes.d.ts +1 -0
  45. package/lib/layout/console/console-wrapper/console-wrapper.component.d.ts +3 -3
  46. package/lib/layout/console/console.service.d.ts +9 -0
  47. package/lib/layout/footer/footer-wrapper/footer-wrapper.component.d.ts +7 -3
  48. package/lib/layout/footer/footer.service.d.ts +9 -0
  49. package/lib/layout/header/header-wrapper/header-wrapper.component.d.ts +17 -9
  50. package/lib/layout/header/header.service.d.ts +4 -3
  51. package/lib/layout/home/home-wrapper/home-wrapper.component.d.ts +90 -1
  52. package/lib/layout/request/request-wrapper/request-wrapper.component.d.ts +10 -1
  53. package/lib/layout/request/request.service.d.ts +60 -0
  54. package/lib/layout/request/tab-content/tab-content.component.d.ts +19 -0
  55. package/lib/layout/shared/shared-wrapper/shared-wrapper.component.d.ts +4 -5
  56. package/lib/layout/shared/shared.service.d.ts +104 -6
  57. package/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.d.ts +135 -6
  58. package/lib/layout/sidebar/sidebar.service.d.ts +3 -2
  59. package/lib/layout/sidedrawer/cide-lyt-drawer-base.class.d.ts +16 -0
  60. package/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.d.ts +71 -0
  61. package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.d.ts +48 -0
  62. package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.d.ts +13 -0
  63. package/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.d.ts +28 -3
  64. package/lib/layout/sidedrawer/sidedrawer.service.d.ts +30 -0
  65. package/lib/services/app-state/app-state-helper.service.d.ts +150 -0
  66. package/lib/services/app-state/app-state.service.d.ts +85 -0
  67. package/lib/services/app-state/index.d.ts +3 -0
  68. package/lib/services/cache-manager/cache-manager.service.d.ts +64 -0
  69. package/lib/services/file-manager/file-manager.service.d.ts +0 -2
  70. package/lib/services/tab-state.service.d.ts +79 -0
  71. package/lib/services/theme/theme.service.d.ts +71 -0
  72. package/lib/services/user-status/user-status.service.d.ts +57 -0
  73. package/lib/utils/custom-route-reuse-strategy.d.ts +15 -0
  74. package/package.json +2 -2
  75. package/public-api.d.ts +3 -0
  76. package/src/lib/assets/css/cide-lyt-style.scss +182 -0
  77. package/src/lib/assets/css/cide-lyt-variable.scss +119 -0
  78. package/fesm2022/cloud-ide-layout-home-wrapper.component-BV7ptL0Y.mjs +0 -14
  79. package/fesm2022/cloud-ide-layout-home-wrapper.component-BV7ptL0Y.mjs.map +0 -1
@@ -1,5 +1,14 @@
1
+ import { ElementRef, QueryList, AfterViewInit } from '@angular/core';
2
+ import { CideLytRequestService } from '../request.service';
1
3
  import * as i0 from "@angular/core";
2
- export declare class CideLytRequestWrapperComponent {
4
+ export declare class CideLytRequestWrapperComponent implements AfterViewInit {
5
+ requestService: CideLytRequestService;
6
+ requestItemElements: QueryList<ElementRef>;
7
+ requestItems: import("@angular/core").Signal<import("../request.service").TabInfo[]>;
8
+ constructor(requestService: CideLytRequestService);
9
+ ngAfterViewInit(): void;
10
+ private applyAnimations;
11
+ applyFlickerEffect(event: Event): void;
3
12
  static ɵfac: i0.ɵɵFactoryDeclaration<CideLytRequestWrapperComponent, never>;
4
13
  static ɵcmp: i0.ɵɵComponentDeclaration<CideLytRequestWrapperComponent, "cide-lyt-request-wrapper", never, {}, {}, never, never, true, never>;
5
14
  }
@@ -0,0 +1,60 @@
1
+ import { WritableSignal, Signal } from '@angular/core';
2
+ import { ISytmLayout } from 'cloud-ide-lms-model';
3
+ import * as i0 from "@angular/core";
4
+ export interface TabInfo {
5
+ id: string;
6
+ title: string;
7
+ route: string;
8
+ params?: Record<string, unknown>;
9
+ active: boolean;
10
+ sytm_page_id_sypg: string;
11
+ themeId: string;
12
+ loadedComponent?: unknown;
13
+ scrollTop?: number;
14
+ scrollLeft?: number;
15
+ layout?: ISytmLayout;
16
+ }
17
+ interface PageDataResponse {
18
+ data?: {
19
+ page?: {
20
+ sypg_title?: string;
21
+ };
22
+ };
23
+ }
24
+ export declare class CideLytRequestService {
25
+ requestVisible: boolean;
26
+ tabsSignal: WritableSignal<TabInfo[]>;
27
+ activeTabIdSignal: WritableSignal<string | null>;
28
+ tabs: Signal<TabInfo[]>;
29
+ activeTabId: Signal<string | null>;
30
+ activeTab: Signal<TabInfo | undefined>;
31
+ private router;
32
+ private routeReuseStrategy;
33
+ private tabStateService;
34
+ private sidedrawerService;
35
+ private sharedService;
36
+ constructor();
37
+ /**
38
+ * Handle request visibility changes from shared service
39
+ */
40
+ private handleRequestVisibility;
41
+ /**
42
+ * Handle sidebar sync when tab becomes active
43
+ */
44
+ private handleSidebarSync;
45
+ /**
46
+ * Handle route-based tab management - called by shared service
47
+ * This method checks for existing tabs and creates/activates as needed
48
+ */
49
+ handleRouteBasedTabManagement(currentRoutePath: string, queryParams: Record<string, unknown>, layout: ISytmLayout, pageData: PageDataResponse, pageCode: string): void;
50
+ addTab(title: string, route: string, params?: Record<string, unknown>, layout?: ISytmLayout): string;
51
+ activateTab(tabId: string): void;
52
+ closeTab(id: string): void;
53
+ hideRequest(): void;
54
+ showRequest(): void;
55
+ private generateId;
56
+ updateTabScrollPosition(tabId: string, scrollTop: number, scrollLeft: number): void;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytRequestService, never>;
58
+ static ɵprov: i0.ɵɵInjectableDeclaration<CideLytRequestService>;
59
+ }
60
+ export {};
@@ -0,0 +1,19 @@
1
+ import { ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { CideLytRequestService } from '../request.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class TabContentComponent implements AfterViewInit {
6
+ private requestService;
7
+ private router;
8
+ private cdr;
9
+ scrollContainerRef: ElementRef<HTMLDivElement>;
10
+ private currentActiveTabId;
11
+ private isRestoringScroll;
12
+ constructor(requestService: CideLytRequestService, router: Router, // Inject Router to listen for NavigationEnd
13
+ cdr: ChangeDetectorRef);
14
+ ngAfterViewInit(): void;
15
+ onScroll(): void;
16
+ private restoreScrollPosition;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TabContentComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabContentComponent, "cide-lyt-tab-content", never, {}, {}, never, never, true, never>;
19
+ }
@@ -1,15 +1,14 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { CideLytSharedService } from '../shared.service';
3
2
  import { designConfigResponseData } from 'cloud-ide-lms-model';
3
+ import { AppStateHelperService } from '../../../services/app-state/app-state-helper.service';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class CideLytSharedWrapperComponent implements OnInit {
6
- private sharedService;
7
6
  shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam>;
8
7
  page_data: designConfigResponseData;
9
- constructor(sharedService: CideLytSharedService);
8
+ private sharedService;
9
+ private sidedrawerService;
10
+ protected appState: AppStateHelperService;
10
11
  ngOnInit(): void;
11
- loadPageData(): void;
12
- setTitle(title: string): void;
13
12
  static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSharedWrapperComponent, never>;
14
13
  static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSharedWrapperComponent, "cide-lyt-shared-wrapper", never, {}, {}, never, never, true, never>;
15
14
  }
@@ -1,16 +1,114 @@
1
- import { designConfigControllerResponse, MDesignConfig } from 'cloud-ide-lms-model';
2
- import { HttpClient } from '@angular/common/http';
1
+ import { designConfigControllerResponse, ISytmLayout, MDesignConfig } from 'cloud-ide-lms-model';
3
2
  import { Observable } from 'rxjs';
4
3
  import { Title } from '@angular/platform-browser';
5
- import { CideElementsService } from 'cloud-ide-element';
4
+ import { CideLytSharedWrapperSetupParam } from './shared-wrapper/shared-wrapper.component';
6
5
  import * as i0 from "@angular/core";
6
+ interface CachedPageData {
7
+ request: Partial<CideLytSharedWrapperSetupParam>;
8
+ response: designConfigControllerResponse;
9
+ timestamp: number;
10
+ ttl: number;
11
+ }
7
12
  export declare class CideLytSharedService {
13
+ private pageDataCacheSignal;
14
+ private loadingStateSignal;
15
+ readonly pageDataCache: import("@angular/core").Signal<{
16
+ [key: string]: CachedPageData;
17
+ }>;
18
+ readonly loadingStates: import("@angular/core").Signal<{
19
+ [key: string]: boolean;
20
+ }>;
21
+ readonly cacheInfo: import("@angular/core").Signal<{
22
+ totalCached: number;
23
+ validCached: number;
24
+ expiredCached: number;
25
+ }>;
26
+ private inflightRequests;
27
+ private readonly DEFAULT_CACHE_TTL;
8
28
  private elementService;
9
29
  private http;
10
30
  titleService: Title;
11
- constructor(elementService: CideElementsService, http: HttpClient, titleService: Title);
12
- loadPageData(body: MDesignConfig): Observable<designConfigControllerResponse>;
13
- setPageData(page_data_response: designConfigControllerResponse): void;
31
+ private sidebarService;
32
+ private headerService;
33
+ private footerService;
34
+ private consoleService;
35
+ private sidedrawerService;
36
+ private router;
37
+ private appState;
38
+ private routeSubscription?;
39
+ private pageDataSubscription?;
40
+ private tabManagementCallback?;
41
+ private requestVisibilityCallback?;
42
+ constructor();
43
+ /**
44
+ * Register tab management callback from request service
45
+ * This allows shared service to call request service without circular dependency
46
+ */
47
+ registerTabManagement(callback: (currentRoutePath: string, queryParams: Record<string, unknown>, layout: ISytmLayout, pageData: designConfigControllerResponse, pageCode: string) => void): void;
48
+ /**
49
+ * Register request visibility callback from request service
50
+ * This allows shared service to control request wrapper visibility
51
+ */
52
+ registerRequestVisibility(callback: (show: boolean) => void): void;
53
+ /**
54
+ * Enhanced loadPageData with caching and deduplication
55
+ * @param body - Request payload
56
+ * @param forceRefresh - Force API call even if cached data exists
57
+ * @param customTTL - Custom cache TTL in milliseconds
58
+ */
59
+ loadPageData(body: MDesignConfig, forceRefresh?: boolean, customTTL?: number): Observable<designConfigControllerResponse>;
60
+ /**
61
+ * Consolidated method to load and process page data
62
+ * This replaces the separate calls in request service and shared wrapper
63
+ */
64
+ loadAndProcessPageData(body: MDesignConfig, options?: {
65
+ forceRefresh?: boolean;
66
+ customTTL?: number;
67
+ setTitle?: boolean;
68
+ setSidebarContext?: boolean;
69
+ updateLayout?: boolean;
70
+ }): Observable<designConfigControllerResponse>;
71
+ /**
72
+ * Get cached page data without making API call
73
+ */
74
+ getCachedPageData(pageCode: string): designConfigControllerResponse | null;
75
+ /**
76
+ * Check if loading for a specific page code
77
+ */
78
+ isLoading(pageCode: string): boolean;
79
+ /**
80
+ * Invalidate cache for specific page code
81
+ */
82
+ invalidateCache(pageCode: string): void;
83
+ /**
84
+ * Clear all cached data
85
+ */
86
+ clearAllCache(): void;
87
+ /**
88
+ * Preload page data for better performance
89
+ */
90
+ preloadPageData(pageCodes: string[]): void;
91
+ private hasValidCache;
92
+ private isCacheValid;
93
+ private cachePageData;
94
+ private setLoadingState;
95
+ private cleanExpiredCache;
96
+ setPageData(page_data_response: designConfigControllerResponse, page_data_payload: Partial<CideLytSharedWrapperSetupParam>): void;
97
+ /**
98
+ * Handle route changes - moved from request service for better architecture
99
+ * This method loads page data and calls request service to manage tabs
100
+ */
101
+ private handleRouteChange;
102
+ /**
103
+ * Handle tab request by calling request service
104
+ */
105
+ private handleTabRequest;
106
+ /**
107
+ * Sync the active menu in the sidebar based on the loaded page data.
108
+ * This ensures the correct module is highlighted in the sidebar.
109
+ */
110
+ private syncSidebarActiveMenu;
14
111
  static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSharedService, never>;
15
112
  static ɵprov: i0.ɵɵInjectableDeclaration<CideLytSharedService>;
16
113
  }
114
+ export {};
@@ -1,11 +1,140 @@
1
+ import { OnInit } from '@angular/core';
1
2
  import { menuResponseData } from 'cloud-ide-lms-model';
2
- import { CideLytSidebarService } from '../sidebar.service';
3
+ import { AppStateHelperService } from '../../../services/app-state';
4
+ import { CideLytUserStatusService, type UserStatus } from '../../../services/user-status/user-status.service';
3
5
  import * as i0 from "@angular/core";
4
- export declare class SidebarWrapperComponent {
5
- private sidebarService;
6
+ export declare class CideLytSidebarWrapperComponent implements OnInit {
7
+ sidebarSetupData: {
8
+ cide_lyt_sidebar_width: number;
9
+ };
10
+ isCollapsed: boolean;
11
+ darkMode: boolean;
12
+ showUserMenu: boolean;
13
+ showOptions: boolean;
14
+ showNotifications: boolean;
15
+ showNotificationsPanel: boolean;
16
+ searchText: string;
17
+ isExpanded: boolean;
18
+ searchResults: {
19
+ icon: string;
20
+ title: string;
21
+ }[];
22
+ collapsedSections: {
23
+ [key: string]: boolean;
24
+ };
25
+ expandedSections: {
26
+ [key: string]: boolean;
27
+ };
28
+ animateSections: boolean[];
29
+ lastScrollTop: number;
30
+ scrolledPast: boolean[];
6
31
  core_system_menu: menuResponseData[];
7
32
  core_system_module: menuResponseData[];
8
- constructor(sidebarService: CideLytSidebarService);
9
- static ɵfac: i0.ɵɵFactoryDeclaration<SidebarWrapperComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<SidebarWrapperComponent, "cide-lyt-sidebar-wrapper", never, {}, {}, never, never, true, never>;
33
+ activeModuleId: string;
34
+ hoverModuleId: string;
35
+ animateItems: boolean;
36
+ moduleLoadComplete: boolean;
37
+ menuLoadComplete: boolean;
38
+ loadingMenus: boolean;
39
+ get selectedModuleMenus(): menuResponseData[];
40
+ /**
41
+ * Gets the CSS classes for the user status indicator
42
+ * Uses the injected user status service
43
+ */
44
+ getUserStatusClass(): string;
45
+ /**
46
+ * Gets the tooltip text for the user status
47
+ * Uses the injected user status service
48
+ */
49
+ getUserStatusText(): string;
50
+ /**
51
+ * Sets the user status (delegates to service)
52
+ * @param status The new status to set
53
+ * @param message Optional custom status message
54
+ */
55
+ setUserStatus(status: UserStatus, message?: string): void;
56
+ /**
57
+ * Gets the current user status data
58
+ */
59
+ get currentUserStatus(): import("../../../services/user-status/user-status.service").UserStatusData;
60
+ /**
61
+ * Gets the icon for the currently active module
62
+ * @returns The icon name for the active module or a default icon
63
+ */
64
+ getActiveModuleIcon(): string;
65
+ onMenuClick(menu: menuResponseData): void;
66
+ /**
67
+ * Toggle section expand/collapse state
68
+ */
69
+ toggleSection(sectionId: string): void;
70
+ /**
71
+ * Check if section is expanded
72
+ */
73
+ isSectionExpanded(sectionId: string): boolean;
74
+ private sidebarService;
75
+ private elementRef;
76
+ appState: AppStateHelperService;
77
+ private router;
78
+ protected userStatusService: CideLytUserStatusService;
79
+ constructor();
80
+ ngOnInit(): void;
81
+ /**
82
+ * Load menus for a specific module
83
+ * @param module The module to load menus for
84
+ */
85
+ loadMenusForModule(module: menuResponseData): void;
86
+ toggleSidebar(): void;
87
+ toggleUserMenu(): void;
88
+ /**
89
+ * Sets the active menu item with animation
90
+ * @param moduleId The ID of the module to set as active
91
+ */
92
+ setActiveMenu(moduleId: string): void;
93
+ /**
94
+ * Sets the active menu item by index with animation
95
+ * @param index The index of the menu item
96
+ */
97
+ setActiveMenuByIndex(index: number): void;
98
+ /**
99
+ * Public method to set active module by ID from external components
100
+ * This is useful when you want to programmatically set the active module
101
+ * @param moduleId The ID of the module to set as active
102
+ * @returns boolean indicating if the module was found and set as active
103
+ */
104
+ setActiveModuleById(moduleId: string): boolean;
105
+ /**
106
+ * Public method to get the currently active module ID
107
+ * @returns The ID of the currently active module, or empty string if none
108
+ */
109
+ getActiveModuleId(): string;
110
+ /**
111
+ * Tracks hover state for enhanced visual feedback
112
+ * @param moduleId The ID of the hovered module, or empty string for none
113
+ */
114
+ onItemHover(moduleId: string): void;
115
+ /**
116
+ * Adds subtle animations when opening dropdown menus
117
+ * @param menuId The ID of the menu element
118
+ */
119
+ animateMenuOpen(menuId: string): void;
120
+ /**
121
+ * Updates tooltip position for more accurate placement
122
+ * @param event MouseEvent from hovering
123
+ * @param tooltip The tooltip element
124
+ */
125
+ updateTooltipPosition(event: MouseEvent, tooltipIndex: number): void;
126
+ toggleNotificationsPanel(): void;
127
+ toggleTheme(): void;
128
+ toggleOptions(): void;
129
+ /**
130
+ * Toggle old-style collapsed sections (for backwards compatibility)
131
+ */
132
+ toggleCollapsedSection(section: string): void;
133
+ isSectionCollapsed(section: string): boolean;
134
+ onSearch(): void;
135
+ onScroll(event: Event): void;
136
+ resetAnimations(): void;
137
+ onDocumentClick(event: MouseEvent): void;
138
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidebarWrapperComponent, never>;
139
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSidebarWrapperComponent, "cide-lyt-sidebar-wrapper", never, {}, {}, never, never, true, never>;
11
140
  }
@@ -1,11 +1,12 @@
1
- import { HttpClient } from '@angular/common/http';
2
1
  import { menuControllerResponse, MMenu } from 'cloud-ide-lms-model';
3
2
  import { Observable } from 'rxjs';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class CideLytSidebarService {
5
+ sidebarMenueVisible: boolean;
6
6
  private http;
7
- constructor(http: HttpClient);
8
7
  getSidebarMenues(body: MMenu): Observable<menuControllerResponse>;
8
+ hideSidebar(): void;
9
+ showSidebar(): void;
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidebarService, never>;
10
11
  static ɵprov: i0.ɵɵInjectableDeclaration<CideLytSidebarService>;
11
12
  }
@@ -0,0 +1,16 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { CideLytSidedrawerService } from './sidedrawer.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare abstract class CideLytDrawerBase implements OnInit {
5
+ private _pageId;
6
+ private _themeId;
7
+ protected sidedrawerService: CideLytSidedrawerService;
8
+ ngOnInit(): void;
9
+ protected afterContextInit(): void;
10
+ setContext(pageId: string, themeId: string): void;
11
+ get pageId(): string | null;
12
+ get themeId(): string | null;
13
+ protected getStorageKey(suffix: string): string;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytDrawerBase, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CideLytDrawerBase, never, never, {}, {}, never, never, false, never>;
16
+ }
@@ -0,0 +1,71 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { SelectOption } from 'cloud-ide-element';
3
+ import { CideLytThemeService } from '../../../services/theme/theme.service';
4
+ import type { ICoreSyth } from 'cloud-ide-lms-model';
5
+ import * as i0 from "@angular/core";
6
+ interface ThemeColor {
7
+ label: string;
8
+ varName: string;
9
+ value: string;
10
+ }
11
+ interface TypographySetting {
12
+ label: string;
13
+ varName: string;
14
+ value: string;
15
+ type: 'number' | 'text';
16
+ min?: number;
17
+ max?: number;
18
+ }
19
+ type ThemeGroup = {
20
+ label: string;
21
+ items: Array<{
22
+ label: string;
23
+ varName: string;
24
+ value: string;
25
+ type: 'number' | 'text';
26
+ min?: number;
27
+ max?: number;
28
+ }>;
29
+ };
30
+ export declare class CideLytDrawerThemeComponent implements OnInit {
31
+ private themeService;
32
+ private platformId;
33
+ private readonly appState;
34
+ presetThemes: {
35
+ value: string;
36
+ label: string;
37
+ theme: ICoreSyth;
38
+ }[];
39
+ selectedTheme: string;
40
+ isLoadingThemes: boolean;
41
+ themeLoadError: string;
42
+ mergedTheme: {
43
+ [key: string]: string;
44
+ };
45
+ isRTL: boolean;
46
+ originalThemeGroupValues: ThemeGroup[];
47
+ originalApiThemeValues: {
48
+ [key: string]: string;
49
+ };
50
+ themeGroups: ThemeGroup[];
51
+ constructor(themeService: CideLytThemeService, platformId: object);
52
+ ngOnInit(): void;
53
+ loadAndApplyUserTheme(): void;
54
+ updateVar(varName: string, value: string): void;
55
+ onThemeChange(event: SelectOption): void;
56
+ onReset(): void;
57
+ onSave(): void;
58
+ hasUnsavedChanges(): boolean;
59
+ /**
60
+ * Check if current values differ from the original API values
61
+ * This is useful for determining if reset should be enabled
62
+ */
63
+ hasChangesFromOriginal(): boolean;
64
+ onColorChange(event: Event, color: ThemeColor): void;
65
+ onTypographyChange(event: Event, setting: TypographySetting): void;
66
+ onLayoutChange(event: Event, setting: TypographySetting): void;
67
+ onDirectionToggle(event: Event): void;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytDrawerThemeComponent, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideLytDrawerThemeComponent, "cide-lyt-drawer-theme", never, {}, {}, never, never, true, never>;
70
+ }
71
+ export {};
@@ -0,0 +1,48 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { FormGroup } from '@angular/forms';
3
+ import { ICoreSypn } from 'cloud-ide-lms-model';
4
+ import { CideLytDrawerBase } from '../cide-lyt-drawer-base.class';
5
+ import * as i0 from "@angular/core";
6
+ export interface NewNoteModel {
7
+ title: string;
8
+ description: string;
9
+ isPageSpecific: boolean;
10
+ isUserSpecific: boolean;
11
+ isEntitySpecific: boolean;
12
+ isThemeSpecific: boolean;
13
+ }
14
+ export interface NotesComponentState {
15
+ newNoteModel: NewNoteModel;
16
+ isFormVisible: boolean;
17
+ scrollTop: number;
18
+ }
19
+ export declare class CideLytSidedrawerNotesComponent extends CideLytDrawerBase implements OnInit {
20
+ private notesSignal;
21
+ notes: import("@angular/core").Signal<ICoreSypn[]>;
22
+ isFormVisible: boolean;
23
+ isEditing: boolean;
24
+ editingNoteId: string | null;
25
+ hoveredNoteIndex: number | null;
26
+ noteForm: FormGroup;
27
+ private notesService;
28
+ private fb;
29
+ private appState;
30
+ ngOnInit(): void;
31
+ protected afterContextInit(): void;
32
+ private initForm;
33
+ showAddForm(): void;
34
+ hideAddForm(): void;
35
+ startEdit(note: ICoreSypn): void;
36
+ cancelEdit(): void;
37
+ onNoteHover(index: number): void;
38
+ onNoteLeave(): void;
39
+ onSubmit(): void;
40
+ private resetForm;
41
+ getState(): {
42
+ newNoteModel: any;
43
+ isFormVisible: boolean;
44
+ };
45
+ setState(state: NotesComponentState): void;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidedrawerNotesComponent, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSidedrawerNotesComponent, "cide-lyt-sidedrawer-notes", never, {}, {}, never, never, true, never>;
48
+ }
@@ -0,0 +1,13 @@
1
+ import { ICoreSypn } from 'cloud-ide-lms-model';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CideLytDrawerNotesService {
5
+ private http;
6
+ constructor();
7
+ getNotes(): Observable<ICoreSypn[]>;
8
+ addNote(note: ICoreSypn): Observable<unknown>;
9
+ updateNote(note: ICoreSypn): Observable<unknown>;
10
+ deleteNote(noteId: string): Observable<unknown>;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytDrawerNotesService, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<CideLytDrawerNotesService>;
13
+ }
@@ -1,5 +1,30 @@
1
+ import { OnInit, ViewContainerRef } from '@angular/core';
2
+ import { CideLytSidedrawerService, SidedrawerItem } from '../sidedrawer.service';
1
3
  import * as i0 from "@angular/core";
2
- export declare class SidedrawerWrapperComponent {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<SidedrawerWrapperComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<SidedrawerWrapperComponent, "cide-lyt-sidedrawer-wrapper", never, {}, {}, never, never, true, never>;
4
+ export declare class CideLytSidedrawerWrapperComponent implements OnInit {
5
+ sidedrawerSetupData: {
6
+ cide_lyt_sidedrawer_width: number;
7
+ };
8
+ get drawerItems(): import("@angular/core").Signal<SidedrawerItem[]>;
9
+ get notesVisible(): import("@angular/core").Signal<boolean>;
10
+ isExpanded: boolean;
11
+ get shouldShowSidedrawer(): import("@angular/core").Signal<boolean>;
12
+ notesContainer: ViewContainerRef;
13
+ private currentComponentRef;
14
+ private componentMap;
15
+ private currentTabId;
16
+ private currentActiveComponent;
17
+ sidedrawerService: CideLytSidedrawerService;
18
+ private requestService;
19
+ private tabStateService;
20
+ constructor();
21
+ ngOnInit(): void;
22
+ loadComponent(configFor: string | null): Promise<void>;
23
+ private clearComponent;
24
+ private saveSidedrawerState;
25
+ private setComponentContext;
26
+ private getNotesContext;
27
+ onItemClick(item: SidedrawerItem): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidedrawerWrapperComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSidedrawerWrapperComponent, "cide-lyt-sidedrawer-wrapper", never, {}, {}, never, never, true, never>;
5
30
  }
@@ -0,0 +1,30 @@
1
+ import { ISytmLayout } from 'cloud-ide-lms-model';
2
+ import * as i0 from "@angular/core";
3
+ export interface SidedrawerItem {
4
+ status: boolean;
5
+ configFor: string;
6
+ title: string;
7
+ icon: string;
8
+ description: string;
9
+ isActive: boolean;
10
+ }
11
+ export declare class CideLytSidedrawerService {
12
+ sidedrawerVisible: boolean;
13
+ private drawerItemsSignal;
14
+ drawerItems: import("@angular/core").Signal<SidedrawerItem[]>;
15
+ private notesVisibleSignal;
16
+ notesVisible: import("@angular/core").Signal<boolean>;
17
+ private activeComponentSignal;
18
+ activeComponent: import("@angular/core").Signal<string | null>;
19
+ private _pageId;
20
+ private _themeId;
21
+ setContext(pageId: string, themeId: string): void;
22
+ get pageId(): string | null;
23
+ get themeId(): string | null;
24
+ hideSidedrawer(): void;
25
+ showSidedrawer(): void;
26
+ updateDrawerItems(layout: ISytmLayout | undefined): void;
27
+ setActiveComponent(configFor: string | null): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidedrawerService, never>;
29
+ static ɵprov: i0.ɵɵInjectableDeclaration<CideLytSidedrawerService>;
30
+ }