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.
- package/README.md +466 -13
- package/esm2022/lib/cloud-ide-layout.routes.mjs +24 -10
- package/esm2022/lib/layout/console/console-wrapper/console-wrapper.component.mjs +6 -6
- package/esm2022/lib/layout/console/console.service.mjs +28 -0
- package/esm2022/lib/layout/footer/footer-wrapper/footer-wrapper.component.mjs +16 -8
- package/esm2022/lib/layout/footer/footer.service.mjs +28 -0
- package/esm2022/lib/layout/header/header-wrapper/header-wrapper.component.mjs +69 -18
- package/esm2022/lib/layout/header/header.service.mjs +17 -6
- package/esm2022/lib/layout/home/home-wrapper/home-wrapper.component.mjs +194 -7
- package/esm2022/lib/layout/layout/layout-wrapper/layout-wrapper.component.mjs +18 -9
- package/esm2022/lib/layout/request/request-wrapper/request-wrapper.component.mjs +54 -6
- package/esm2022/lib/layout/request/request.service.mjs +235 -0
- package/esm2022/lib/layout/request/tab-content/tab-content.component.mjs +84 -0
- package/esm2022/lib/layout/shared/shared-wrapper/shared-wrapper.component.mjs +32 -20
- package/esm2022/lib/layout/shared/shared.service.mjs +490 -14
- package/esm2022/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.mjs +480 -15
- package/esm2022/lib/layout/sidebar/sidebar.service.mjs +20 -7
- package/esm2022/lib/layout/sidedrawer/cide-lyt-drawer-base.class.mjs +40 -0
- package/esm2022/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.mjs +296 -0
- package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.mjs +175 -0
- package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.mjs +51 -0
- package/esm2022/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.mjs +254 -9
- package/esm2022/lib/layout/sidedrawer/sidedrawer.service.mjs +70 -0
- package/esm2022/lib/services/app-state/app-state-helper.service.mjs +222 -0
- package/esm2022/lib/services/app-state/app-state.service.mjs +256 -0
- package/esm2022/lib/services/app-state/index.mjs +3 -0
- package/esm2022/lib/services/cache-manager/cache-manager.service.mjs +112 -0
- package/esm2022/lib/services/file-manager/file-manager.service.mjs +7 -7
- package/esm2022/lib/services/tab-state.service.mjs +128 -0
- package/esm2022/lib/services/theme/theme.service.mjs +151 -0
- package/esm2022/lib/services/user-status/user-status.service.mjs +135 -0
- package/esm2022/lib/utils/custom-route-reuse-strategy.mjs +61 -0
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/cloud-ide-layout-cloud-ide-layout-CW1h3qH0.mjs +2914 -0
- package/fesm2022/cloud-ide-layout-cloud-ide-layout-CW1h3qH0.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout-drawer-theme.component-CoOmLWB_.mjs +443 -0
- package/fesm2022/cloud-ide-layout-drawer-theme.component-CoOmLWB_.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout-home-wrapper.component-CBqNAcEP.mjs +197 -0
- package/fesm2022/cloud-ide-layout-home-wrapper.component-CBqNAcEP.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout-sidedrawer-notes.component-cZtT-79M.mjs +260 -0
- package/fesm2022/cloud-ide-layout-sidedrawer-notes.component-cZtT-79M.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout.mjs +1 -261
- package/fesm2022/cloud-ide-layout.mjs.map +1 -1
- package/lib/cloud-ide-layout.routes.d.ts +1 -0
- package/lib/layout/console/console-wrapper/console-wrapper.component.d.ts +3 -3
- package/lib/layout/console/console.service.d.ts +9 -0
- package/lib/layout/footer/footer-wrapper/footer-wrapper.component.d.ts +7 -3
- package/lib/layout/footer/footer.service.d.ts +9 -0
- package/lib/layout/header/header-wrapper/header-wrapper.component.d.ts +17 -9
- package/lib/layout/header/header.service.d.ts +4 -3
- package/lib/layout/home/home-wrapper/home-wrapper.component.d.ts +90 -1
- package/lib/layout/request/request-wrapper/request-wrapper.component.d.ts +10 -1
- package/lib/layout/request/request.service.d.ts +60 -0
- package/lib/layout/request/tab-content/tab-content.component.d.ts +19 -0
- package/lib/layout/shared/shared-wrapper/shared-wrapper.component.d.ts +4 -5
- package/lib/layout/shared/shared.service.d.ts +104 -6
- package/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.d.ts +135 -6
- package/lib/layout/sidebar/sidebar.service.d.ts +3 -2
- package/lib/layout/sidedrawer/cide-lyt-drawer-base.class.d.ts +16 -0
- package/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.d.ts +71 -0
- package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.d.ts +48 -0
- package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.d.ts +13 -0
- package/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.d.ts +28 -3
- package/lib/layout/sidedrawer/sidedrawer.service.d.ts +30 -0
- package/lib/services/app-state/app-state-helper.service.d.ts +150 -0
- package/lib/services/app-state/app-state.service.d.ts +85 -0
- package/lib/services/app-state/index.d.ts +3 -0
- package/lib/services/cache-manager/cache-manager.service.d.ts +64 -0
- package/lib/services/file-manager/file-manager.service.d.ts +0 -2
- package/lib/services/tab-state.service.d.ts +79 -0
- package/lib/services/theme/theme.service.d.ts +71 -0
- package/lib/services/user-status/user-status.service.d.ts +57 -0
- package/lib/utils/custom-route-reuse-strategy.d.ts +15 -0
- package/package.json +2 -2
- package/public-api.d.ts +3 -0
- package/src/lib/assets/css/cide-lyt-style.scss +182 -0
- package/src/lib/assets/css/cide-lyt-variable.scss +119 -0
- package/fesm2022/cloud-ide-layout-home-wrapper.component-BV7ptL0Y.mjs +0 -14
- package/fesm2022/cloud-ide-layout-home-wrapper.component-BV7ptL0Y.mjs.map +0 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Injectable, signal, computed } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, interval } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CideLytUserStatusService {
|
|
5
|
+
constructor() {
|
|
6
|
+
// Modern Angular Signals pattern
|
|
7
|
+
this._userStatus = signal({
|
|
8
|
+
status: 'online',
|
|
9
|
+
lastActive: new Date(),
|
|
10
|
+
message: undefined
|
|
11
|
+
});
|
|
12
|
+
// Public readonly access to status
|
|
13
|
+
this.userStatus = this._userStatus.asReadonly();
|
|
14
|
+
// Computed properties
|
|
15
|
+
this.isOnline = computed(() => this._userStatus().status !== 'offline');
|
|
16
|
+
this.statusColor = computed(() => this.getStatusColor(this._userStatus().status));
|
|
17
|
+
this.statusText = computed(() => this.getStatusText(this._userStatus().status));
|
|
18
|
+
// Legacy observable for compatibility
|
|
19
|
+
this.statusSubject = new BehaviorSubject(this._userStatus());
|
|
20
|
+
this.status$ = this.statusSubject.asObservable();
|
|
21
|
+
// Auto-away functionality
|
|
22
|
+
this.lastActivityTime = Date.now();
|
|
23
|
+
this.autoAwayTimeout = 5 * 60 * 1000; // 5 minutes
|
|
24
|
+
this.autoAwayEnabled = true;
|
|
25
|
+
this.initializeActivityTracking();
|
|
26
|
+
this.startAutoAwayTimer();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Sets the user status
|
|
30
|
+
* @param status The new status to set
|
|
31
|
+
* @param message Optional custom status message
|
|
32
|
+
*/
|
|
33
|
+
setStatus(status, message) {
|
|
34
|
+
const statusData = {
|
|
35
|
+
status,
|
|
36
|
+
lastActive: new Date(),
|
|
37
|
+
message
|
|
38
|
+
};
|
|
39
|
+
this._userStatus.set(statusData);
|
|
40
|
+
this.statusSubject.next(statusData);
|
|
41
|
+
this.lastActivityTime = Date.now();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Marks user as active (resets away timer)
|
|
45
|
+
*/
|
|
46
|
+
markUserActive() {
|
|
47
|
+
this.lastActivityTime = Date.now();
|
|
48
|
+
// If user was away, bring them back to online
|
|
49
|
+
if (this._userStatus().status === 'away') {
|
|
50
|
+
this.setStatus('online');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gets CSS class for status color
|
|
55
|
+
*/
|
|
56
|
+
getStatusColor(status) {
|
|
57
|
+
switch (status) {
|
|
58
|
+
case 'online': return 'tw-bg-green-500';
|
|
59
|
+
case 'away': return 'tw-bg-yellow-500';
|
|
60
|
+
case 'busy': return 'tw-bg-orange-500';
|
|
61
|
+
case 'do-not-disturb': return 'tw-bg-red-500';
|
|
62
|
+
case 'offline': return 'tw-bg-gray-400';
|
|
63
|
+
default: return 'tw-bg-gray-400';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Gets human-readable status text
|
|
68
|
+
*/
|
|
69
|
+
getStatusText(status) {
|
|
70
|
+
const current = this._userStatus();
|
|
71
|
+
const baseText = this.getBaseStatusText(status);
|
|
72
|
+
return current.message ? `${baseText} - ${current.message}` : baseText;
|
|
73
|
+
}
|
|
74
|
+
getBaseStatusText(status) {
|
|
75
|
+
switch (status) {
|
|
76
|
+
case 'online': return 'Online';
|
|
77
|
+
case 'away': return 'Away';
|
|
78
|
+
case 'busy': return 'Busy';
|
|
79
|
+
case 'do-not-disturb': return 'Do not disturb';
|
|
80
|
+
case 'offline': return 'Offline';
|
|
81
|
+
default: return 'Unknown';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Initialize activity tracking for auto-away
|
|
86
|
+
*/
|
|
87
|
+
initializeActivityTracking() {
|
|
88
|
+
if (typeof window === 'undefined')
|
|
89
|
+
return;
|
|
90
|
+
const events = ['mousedown', 'mousemove', 'keypress', 'scroll', 'touchstart', 'click'];
|
|
91
|
+
events.forEach(event => {
|
|
92
|
+
document.addEventListener(event, () => {
|
|
93
|
+
this.markUserActive();
|
|
94
|
+
}, { passive: true });
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Start the auto-away timer
|
|
99
|
+
*/
|
|
100
|
+
startAutoAwayTimer() {
|
|
101
|
+
if (!this.autoAwayEnabled)
|
|
102
|
+
return;
|
|
103
|
+
interval(30000).subscribe({
|
|
104
|
+
next: () => {
|
|
105
|
+
const now = Date.now();
|
|
106
|
+
const timeSinceActivity = now - this.lastActivityTime;
|
|
107
|
+
if (timeSinceActivity > this.autoAwayTimeout &&
|
|
108
|
+
this._userStatus().status === 'online') {
|
|
109
|
+
this.setStatus('away', 'Auto-away due to inactivity');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Enable or disable auto-away functionality
|
|
116
|
+
*/
|
|
117
|
+
setAutoAwayEnabled(enabled) {
|
|
118
|
+
this.autoAwayEnabled = enabled;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Set the auto-away timeout (in milliseconds)
|
|
122
|
+
*/
|
|
123
|
+
setAutoAwayTimeout(timeout) {
|
|
124
|
+
this.autoAwayTimeout = timeout;
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideLytUserStatusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
127
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideLytUserStatusService, providedIn: 'root' }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideLytUserStatusService, decorators: [{
|
|
130
|
+
type: Injectable,
|
|
131
|
+
args: [{
|
|
132
|
+
providedIn: 'root'
|
|
133
|
+
}]
|
|
134
|
+
}], ctorParameters: () => [] });
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zdGF0dXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1sYXlvdXQvc3JjL2xpYi9zZXJ2aWNlcy91c2VyLXN0YXR1cy91c2VyLXN0YXR1cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFhakQsTUFBTSxPQUFPLHdCQUF3QjtJQXlCbkM7UUF4QkEsaUNBQWlDO1FBQ3pCLGdCQUFXLEdBQUcsTUFBTSxDQUFpQjtZQUMzQyxNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDdEIsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsbUNBQW1DO1FBQ25CLGVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTNELHNCQUFzQjtRQUNOLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQztRQUNuRSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzdFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUUzRixzQ0FBc0M7UUFDOUIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsSUFBSSxDQUFD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QkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCB0eXBlIFVzZXJTdGF0dXMgPSAnb25saW5lJyB8ICdvZmZsaW5lJyB8ICdhd2F5JyB8ICdidXN5JyB8ICdkby1ub3QtZGlzdHVyYic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJTdGF0dXNEYXRhIHtcclxuICBzdGF0dXM6IFVzZXJTdGF0dXM7XHJcbiAgbGFzdEFjdGl2ZTogRGF0ZTtcclxuICBtZXNzYWdlPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWRlTHl0VXNlclN0YXR1c1NlcnZpY2Uge1xyXG4gIC8vIE1vZGVybiBBbmd1bGFyIFNpZ25hbHMgcGF0dGVyblxyXG4gIHByaXZhdGUgX3VzZXJTdGF0dXMgPSBzaWduYWw8VXNlclN0YXR1c0RhdGE+KHtcclxuICAgIHN0YXR1czogJ29ubGluZScsXHJcbiAgICBsYXN0QWN0aXZlOiBuZXcgRGF0ZSgpLFxyXG4gICAgbWVzc2FnZTogdW5kZWZpbmVkXHJcbiAgfSk7XHJcblxyXG4gIC8vIFB1YmxpYyByZWFkb25seSBhY2Nlc3MgdG8gc3RhdHVzXHJcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJTdGF0dXMgPSB0aGlzLl91c2VyU3RhdHVzLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgLy8gQ29tcHV0ZWQgcHJvcGVydGllc1xyXG4gIHB1YmxpYyByZWFkb25seSBpc09ubGluZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3VzZXJTdGF0dXMoKS5zdGF0dXMgIT09ICdvZmZsaW5lJyk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nZXRTdGF0dXNDb2xvcih0aGlzLl91c2VyU3RhdHVzKCkuc3RhdHVzKSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1RleHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdldFN0YXR1c1RleHQodGhpcy5fdXNlclN0YXR1cygpLnN0YXR1cykpO1xyXG5cclxuICAvLyBMZWdhY3kgb2JzZXJ2YWJsZSBmb3IgY29tcGF0aWJpbGl0eVxyXG4gIHByaXZhdGUgc3RhdHVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlclN0YXR1c0RhdGE+KHRoaXMuX3VzZXJTdGF0dXMoKSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyQgPSB0aGlzLnN0YXR1c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIC8vIEF1dG8tYXdheSBmdW5jdGlvbmFsaXR5XHJcbiAgcHJpdmF0ZSBsYXN0QWN0aXZpdHlUaW1lID0gRGF0ZS5ub3coKTtcclxuICBwcml2YXRlIGF1dG9Bd2F5VGltZW91dCA9IDUgKiA2MCAqIDEwMDA7IC8vIDUgbWludXRlc1xyXG4gIHByaXZhdGUgYXV0b0F3YXlFbmFibGVkID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpdml0eVRyYWNraW5nKCk7XHJcbiAgICB0aGlzLnN0YXJ0QXV0b0F3YXlUaW1lcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdXNlciBzdGF0dXNcclxuICAgKiBAcGFyYW0gc3RhdHVzIFRoZSBuZXcgc3RhdHVzIHRvIHNldFxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIGN1c3RvbSBzdGF0dXMgbWVzc2FnZVxyXG4gICAqL1xyXG4gIHNldFN0YXR1cyhzdGF0dXM6IFVzZXJTdGF0dXMsIG1lc3NhZ2U/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0YXR1c0RhdGE6IFVzZXJTdGF0dXNEYXRhID0ge1xyXG4gICAgICBzdGF0dXMsXHJcbiAgICAgIGxhc3RBY3RpdmU6IG5ldyBEYXRlKCksXHJcbiAgICAgIG1lc3NhZ2VcclxuICAgIH07XHJcbiAgICBcclxuICAgIHRoaXMuX3VzZXJTdGF0dXMuc2V0KHN0YXR1c0RhdGEpO1xyXG4gICAgdGhpcy5zdGF0dXNTdWJqZWN0Lm5leHQoc3RhdHVzRGF0YSk7XHJcbiAgICB0aGlzLmxhc3RBY3Rpdml0eVRpbWUgPSBEYXRlLm5vdygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFya3MgdXNlciBhcyBhY3RpdmUgKHJlc2V0cyBhd2F5IHRpbWVyKVxyXG4gICAqL1xyXG4gIG1hcmtVc2VyQWN0aXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYXN0QWN0aXZpdHlUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgIFxyXG4gICAgLy8gSWYgdXNlciB3YXMgYXdheSwgYnJpbmcgdGhlbSBiYWNrIHRvIG9ubGluZVxyXG4gICAgaWYgKHRoaXMuX3VzZXJTdGF0dXMoKS5zdGF0dXMgPT09ICdhd2F5Jykge1xyXG4gICAgICB0aGlzLnNldFN0YXR1cygnb25saW5lJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIENTUyBjbGFzcyBmb3Igc3RhdHVzIGNvbG9yXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRTdGF0dXNDb2xvcihzdGF0dXM6IFVzZXJTdGF0dXMpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgY2FzZSAnb25saW5lJzogcmV0dXJuICd0dy1iZy1ncmVlbi01MDAnO1xyXG4gICAgICBjYXNlICdhd2F5JzogcmV0dXJuICd0dy1iZy15ZWxsb3ctNTAwJztcclxuICAgICAgY2FzZSAnYnVzeSc6IHJldHVybiAndHctYmctb3JhbmdlLTUwMCc7XHJcbiAgICAgIGNhc2UgJ2RvLW5vdC1kaXN0dXJiJzogcmV0dXJuICd0dy1iZy1yZWQtNTAwJztcclxuICAgICAgY2FzZSAnb2ZmbGluZSc6IHJldHVybiAndHctYmctZ3JheS00MDAnO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ3R3LWJnLWdyYXktNDAwJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgaHVtYW4tcmVhZGFibGUgc3RhdHVzIHRleHRcclxuICAgKi9cclxuICBwcml2YXRlIGdldFN0YXR1c1RleHQoc3RhdHVzOiBVc2VyU3RhdHVzKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl91c2VyU3RhdHVzKCk7XHJcbiAgICBjb25zdCBiYXNlVGV4dCA9IHRoaXMuZ2V0QmFzZVN0YXR1c1RleHQoc3RhdHVzKTtcclxuICAgIFxyXG4gICAgcmV0dXJuIGN1cnJlbnQubWVzc2FnZSA/IGAke2Jhc2VUZXh0fSAtICR7Y3VycmVudC5tZXNzYWdlfWAgOiBiYXNlVGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QmFzZVN0YXR1c1RleHQoc3RhdHVzOiBVc2VyU3RhdHVzKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoc3RhdHVzKSB7XHJcbiAgICAgIGNhc2UgJ29ubGluZSc6IHJldHVybiAnT25saW5lJztcclxuICAgICAgY2FzZSAnYXdheSc6IHJldHVybiAnQXdheSc7XHJcbiAgICAgIGNhc2UgJ2J1c3knOiByZXR1cm4gJ0J1c3knO1xyXG4gICAgICBjYXNlICdkby1ub3QtZGlzdHVyYic6IHJldHVybiAnRG8gbm90IGRpc3R1cmInO1xyXG4gICAgICBjYXNlICdvZmZsaW5lJzogcmV0dXJuICdPZmZsaW5lJztcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICdVbmtub3duJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgYWN0aXZpdHkgdHJhY2tpbmcgZm9yIGF1dG8tYXdheVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFjdGl2aXR5VHJhY2tpbmcoKTogdm9pZCB7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBldmVudHMgPSBbJ21vdXNlZG93bicsICdtb3VzZW1vdmUnLCAna2V5cHJlc3MnLCAnc2Nyb2xsJywgJ3RvdWNoc3RhcnQnLCAnY2xpY2snXTtcclxuICAgIFxyXG4gICAgZXZlbnRzLmZvckVhY2goZXZlbnQgPT4ge1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tYXJrVXNlckFjdGl2ZSgpO1xyXG4gICAgICB9LCB7IHBhc3NpdmU6IHRydWUgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0IHRoZSBhdXRvLWF3YXkgdGltZXJcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXJ0QXV0b0F3YXlUaW1lcigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5hdXRvQXdheUVuYWJsZWQpIHJldHVybjtcclxuXHJcbiAgICBpbnRlcnZhbCgzMDAwMCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4geyAvLyBDaGVjayBldmVyeSAzMCBzZWNvbmRzXHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBjb25zdCB0aW1lU2luY2VBY3Rpdml0eSA9IG5vdyAtIHRoaXMubGFzdEFjdGl2aXR5VGltZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGltZVNpbmNlQWN0aXZpdHkgPiB0aGlzLmF1dG9Bd2F5VGltZW91dCAmJiBcclxuICAgICAgICAgICAgdGhpcy5fdXNlclN0YXR1cygpLnN0YXR1cyA9PT0gJ29ubGluZScpIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKCdhd2F5JywgJ0F1dG8tYXdheSBkdWUgdG8gaW5hY3Rpdml0eScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWF3YXkgZnVuY3Rpb25hbGl0eVxyXG4gICAqL1xyXG4gIHNldEF1dG9Bd2F5RW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dG9Bd2F5RW5hYmxlZCA9IGVuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGF1dG8tYXdheSB0aW1lb3V0IChpbiBtaWxsaXNlY29uZHMpXHJcbiAgICovXHJcbiAgc2V0QXV0b0F3YXlUaW1lb3V0KHRpbWVvdXQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRvQXdheVRpbWVvdXQgPSB0aW1lb3V0O1xyXG4gIH1cclxufSAiXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A custom route reuse strategy that allows storing and retrieving routes
|
|
3
|
+
* to persist component state, especially for tabbed navigation.
|
|
4
|
+
*/
|
|
5
|
+
export class CustomRouteReuseStrategy {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.storedRoutes = {};
|
|
8
|
+
}
|
|
9
|
+
// Generates a unique key for a route.
|
|
10
|
+
// For routes marked with 'reuseTab', this key includes sorted query parameters
|
|
11
|
+
// to ensure distinct states for tabs differing by query params.
|
|
12
|
+
getPathKey(route) {
|
|
13
|
+
let path = route.pathFromRoot
|
|
14
|
+
.map(r => r.url.map(segment => segment.path).join('/'))
|
|
15
|
+
.filter(p => p.length > 0)
|
|
16
|
+
.join('/');
|
|
17
|
+
// If the route is marked for tab reuse and has query parameters,
|
|
18
|
+
// append them to the key in a sorted, consistent manner.
|
|
19
|
+
if (route.data && route.data['reuseTab'] && route.queryParamMap.keys.length > 0) {
|
|
20
|
+
const queryParams = route.queryParamMap.keys
|
|
21
|
+
.sort() // Ensure consistent order of query parameters
|
|
22
|
+
.map(key => `${key}=${route.queryParamMap.get(key)}`)
|
|
23
|
+
.join('&');
|
|
24
|
+
path += '?' + queryParams;
|
|
25
|
+
}
|
|
26
|
+
return path;
|
|
27
|
+
}
|
|
28
|
+
// Determines if this route (and its subtree) should be detached to be reused later.
|
|
29
|
+
shouldDetach(route) {
|
|
30
|
+
return !!(route.data && route.data['reuseTab']);
|
|
31
|
+
}
|
|
32
|
+
// Stores the detached route.
|
|
33
|
+
store(route, handle) {
|
|
34
|
+
const pathKey = this.getPathKey(route);
|
|
35
|
+
if (handle && route.data && route.data['reuseTab'] && pathKey) {
|
|
36
|
+
this.storedRoutes[pathKey] = handle;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Determines if this route (and its subtree) should be reattached.
|
|
40
|
+
shouldAttach(route) {
|
|
41
|
+
const pathKey = this.getPathKey(route);
|
|
42
|
+
return !!pathKey && !!this.storedRoutes[pathKey];
|
|
43
|
+
}
|
|
44
|
+
// Retrieves the previously stored route.
|
|
45
|
+
retrieve(route) {
|
|
46
|
+
const pathKey = this.getPathKey(route);
|
|
47
|
+
if (!pathKey || !this.storedRoutes[pathKey]) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return this.storedRoutes[pathKey];
|
|
51
|
+
}
|
|
52
|
+
// Determines if a route should be reused.
|
|
53
|
+
shouldReuseRoute(future, curr) {
|
|
54
|
+
return future.routeConfig === curr.routeConfig;
|
|
55
|
+
}
|
|
56
|
+
// Clears a stored route, typically when a tab is closed.
|
|
57
|
+
clearStoredRoute(pathKey) {
|
|
58
|
+
delete this.storedRoutes[pathKey];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJvdXRlLXJldXNlLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWxheW91dC9zcmMvbGliL3V0aWxzL2N1c3RvbS1yb3V0ZS1yZXVzZS1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ1UsaUJBQVksR0FBMkMsRUFBRSxDQUFDO0lBNERwRSxDQUFDO0lBMURDLHNDQUFzQztJQUN0QywrRUFBK0U7SUFDL0UsZ0VBQWdFO0lBQ3hELFVBQVUsQ0FBQyxLQUE2QjtRQUM5QyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWTthQUMxQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7YUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWIsaUVBQWlFO1FBQ2pFLHlEQUF5RDtRQUN6RCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJO2lCQUN6QyxJQUFJLEVBQUUsQ0FBQyw4Q0FBOEM7aUJBQ3JELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7aUJBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNiLElBQUksSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvRkFBb0Y7SUFDcEYsWUFBWSxDQUFDLEtBQTZCO1FBQ3hDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixLQUFLLENBQUMsS0FBNkIsRUFBRSxNQUFrQztRQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxZQUFZLENBQUMsS0FBNkI7UUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxRQUFRLENBQUMsS0FBNkI7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLGdCQUFnQixDQUFDLE1BQThCLEVBQUUsSUFBNEI7UUFDM0UsT0FBTyxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDakQsQ0FBQztJQUVELHlEQUF5RDtJQUNsRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEZXRhY2hlZFJvdXRlSGFuZGxlLCBSb3V0ZVJldXNlU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqXHJcbiAqIEEgY3VzdG9tIHJvdXRlIHJldXNlIHN0cmF0ZWd5IHRoYXQgYWxsb3dzIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgcm91dGVzXHJcbiAqIHRvIHBlcnNpc3QgY29tcG9uZW50IHN0YXRlLCBlc3BlY2lhbGx5IGZvciB0YWJiZWQgbmF2aWdhdGlvbi5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21Sb3V0ZVJldXNlU3RyYXRlZ3kgaW1wbGVtZW50cyBSb3V0ZVJldXNlU3RyYXRlZ3kge1xyXG4gIHByaXZhdGUgc3RvcmVkUm91dGVzOiB7IFtrZXk6IHN0cmluZ106IERldGFjaGVkUm91dGVIYW5kbGUgfSA9IHt9O1xyXG5cclxuICAvLyBHZW5lcmF0ZXMgYSB1bmlxdWUga2V5IGZvciBhIHJvdXRlLlxyXG4gIC8vIEZvciByb3V0ZXMgbWFya2VkIHdpdGggJ3JldXNlVGFiJywgdGhpcyBrZXkgaW5jbHVkZXMgc29ydGVkIHF1ZXJ5IHBhcmFtZXRlcnNcclxuICAvLyB0byBlbnN1cmUgZGlzdGluY3Qgc3RhdGVzIGZvciB0YWJzIGRpZmZlcmluZyBieSBxdWVyeSBwYXJhbXMuXHJcbiAgcHJpdmF0ZSBnZXRQYXRoS2V5KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogc3RyaW5nIHtcclxuICAgIGxldCBwYXRoID0gcm91dGUucGF0aEZyb21Sb290XHJcbiAgICAgIC5tYXAociA9PiByLnVybC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKSlcclxuICAgICAgLmZpbHRlcihwID0+IHAubGVuZ3RoID4gMClcclxuICAgICAgLmpvaW4oJy8nKTtcclxuXHJcbiAgICAvLyBJZiB0aGUgcm91dGUgaXMgbWFya2VkIGZvciB0YWIgcmV1c2UgYW5kIGhhcyBxdWVyeSBwYXJhbWV0ZXJzLFxyXG4gICAgLy8gYXBwZW5kIHRoZW0gdG8gdGhlIGtleSBpbiBhIHNvcnRlZCwgY29uc2lzdGVudCBtYW5uZXIuXHJcbiAgICBpZiAocm91dGUuZGF0YSAmJiByb3V0ZS5kYXRhWydyZXVzZVRhYiddICYmIHJvdXRlLnF1ZXJ5UGFyYW1NYXAua2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcm91dGUucXVlcnlQYXJhbU1hcC5rZXlzXHJcbiAgICAgICAgLnNvcnQoKSAvLyBFbnN1cmUgY29uc2lzdGVudCBvcmRlciBvZiBxdWVyeSBwYXJhbWV0ZXJzXHJcbiAgICAgICAgLm1hcChrZXkgPT4gYCR7a2V5fT0ke3JvdXRlLnF1ZXJ5UGFyYW1NYXAuZ2V0KGtleSl9YClcclxuICAgICAgICAuam9pbignJicpO1xyXG4gICAgICBwYXRoICs9ICc/JyArIHF1ZXJ5UGFyYW1zO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICAvLyBEZXRlcm1pbmVzIGlmIHRoaXMgcm91dGUgKGFuZCBpdHMgc3VidHJlZSkgc2hvdWxkIGJlIGRldGFjaGVkIHRvIGJlIHJldXNlZCBsYXRlci5cclxuICBzaG91bGREZXRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIShyb3V0ZS5kYXRhICYmIHJvdXRlLmRhdGFbJ3JldXNlVGFiJ10pO1xyXG4gIH1cclxuXHJcbiAgLy8gU3RvcmVzIHRoZSBkZXRhY2hlZCByb3V0ZS5cclxuICBzdG9yZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgaGFuZGxlOiBEZXRhY2hlZFJvdXRlSGFuZGxlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGF0aEtleSA9IHRoaXMuZ2V0UGF0aEtleShyb3V0ZSk7XHJcbiAgICBpZiAoaGFuZGxlICYmIHJvdXRlLmRhdGEgJiYgcm91dGUuZGF0YVsncmV1c2VUYWInXSAmJiBwYXRoS2V5KSB7XHJcbiAgICAgIHRoaXMuc3RvcmVkUm91dGVzW3BhdGhLZXldID0gaGFuZGxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRGV0ZXJtaW5lcyBpZiB0aGlzIHJvdXRlIChhbmQgaXRzIHN1YnRyZWUpIHNob3VsZCBiZSByZWF0dGFjaGVkLlxyXG4gIHNob3VsZEF0dGFjaChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0aEtleSA9IHRoaXMuZ2V0UGF0aEtleShyb3V0ZSk7XHJcbiAgICByZXR1cm4gISFwYXRoS2V5ICYmICEhdGhpcy5zdG9yZWRSb3V0ZXNbcGF0aEtleV07XHJcbiAgfVxyXG5cclxuICAvLyBSZXRyaWV2ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHJvdXRlLlxyXG4gIHJldHJpZXZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogRGV0YWNoZWRSb3V0ZUhhbmRsZSB8IG51bGwge1xyXG4gICAgY29uc3QgcGF0aEtleSA9IHRoaXMuZ2V0UGF0aEtleShyb3V0ZSk7XHJcbiAgICBpZiAoIXBhdGhLZXkgfHwgIXRoaXMuc3RvcmVkUm91dGVzW3BhdGhLZXldKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmVkUm91dGVzW3BhdGhLZXldO1xyXG4gIH1cclxuXHJcbiAgLy8gRGV0ZXJtaW5lcyBpZiBhIHJvdXRlIHNob3VsZCBiZSByZXVzZWQuXHJcbiAgc2hvdWxkUmV1c2VSb3V0ZShmdXR1cmU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGN1cnI6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmdXR1cmUucm91dGVDb25maWcgPT09IGN1cnIucm91dGVDb25maWc7XHJcbiAgfVxyXG5cclxuICAvLyBDbGVhcnMgYSBzdG9yZWQgcm91dGUsIHR5cGljYWxseSB3aGVuIGEgdGFiIGlzIGNsb3NlZC5cclxuICBwdWJsaWMgY2xlYXJTdG9yZWRSb3V0ZShwYXRoS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGRlbGV0ZSB0aGlzLnN0b3JlZFJvdXRlc1twYXRoS2V5XTtcclxuICB9XHJcbn0iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -6,4 +6,9 @@ export * from './lib/cloud-ide-layout.component';
|
|
|
6
6
|
export * from './lib/layout/shared/shared-wrapper/shared-wrapper.component';
|
|
7
7
|
export * from './lib/layout/shared/shared.service';
|
|
8
8
|
export * from './lib/cloud-ide-layout.routes';
|
|
9
|
-
|
|
9
|
+
// App State Management
|
|
10
|
+
export * from './lib/services/app-state';
|
|
11
|
+
export * from './lib/services/user-status/user-status.service';
|
|
12
|
+
// Modern Page Data Management (Legacy code removed)
|
|
13
|
+
export * from './lib/services/cache-manager/cache-manager.service';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1sYXlvdXQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsK0JBQStCLENBQUM7QUFFOUMsdUJBQXVCO0FBQ3ZCLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxvREFBb0Q7QUFDcEQsY0FBYyxvREFBb0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY2xvdWQtaWRlLWxheW91dFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nsb3VkLWlkZS1sYXlvdXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbG91ZC1pZGUtbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYXlvdXQvc2hhcmVkL3NoYXJlZC13cmFwcGVyL3NoYXJlZC13cmFwcGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYXlvdXQvc2hhcmVkL3NoYXJlZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nsb3VkLWlkZS1sYXlvdXQucm91dGVzJztcblxuLy8gQXBwIFN0YXRlIE1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwcC1zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy91c2VyLXN0YXR1cy91c2VyLXN0YXR1cy5zZXJ2aWNlJztcblxuLy8gTW9kZXJuIFBhZ2UgRGF0YSBNYW5hZ2VtZW50IChMZWdhY3kgY29kZSByZW1vdmVkKVxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY2FjaGUtbWFuYWdlci9jYWNoZS1tYW5hZ2VyLnNlcnZpY2UnOyJdfQ==
|