@testgorilla/tgo-shared-lib 2.0.2 → 4.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
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# @testgorilla/tgo-shared-lib
|
|
2
|
-
|
|
3
|
-
Shared library component for TestGorilla assessments.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install @testgorilla/tgo-shared-lib
|
|
9
|
-
```
|
|
1
|
+
# @testgorilla/tgo-shared-lib
|
|
2
|
+
|
|
3
|
+
Shared library component for TestGorilla assessments.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @testgorilla/tgo-shared-lib
|
|
9
|
+
```
|
|
@@ -7,7 +7,7 @@ import 'mixpanel-browser';
|
|
|
7
7
|
import { Observable, throwError, EMPTY, of, delay } from 'rxjs';
|
|
8
8
|
import { TRANSLOCO_SCOPE, TranslocoTestingModule, translate } from '@ngneat/transloco';
|
|
9
9
|
import * as i1$1 from '@angular/common/http';
|
|
10
|
-
import * as i2 from '@testgorilla/tgo-ui';
|
|
10
|
+
import * as i2 from '@testgorilla/tgo-ui/components/snackbar';
|
|
11
11
|
import { catchError } from 'rxjs/operators';
|
|
12
12
|
|
|
13
13
|
class AudioAnimationComponent {
|
|
@@ -67,9 +67,12 @@ class AudioAnimationComponent {
|
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
let range;
|
|
70
|
-
this.fakeData
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
if (this.fakeData) {
|
|
71
|
+
range = this.getFakeVolumeRange(volume);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
range = this.getRealVolumeRange(volume);
|
|
75
|
+
}
|
|
73
76
|
const randomHeight = this.getRandomHeight(range.min, range.max);
|
|
74
77
|
return {
|
|
75
78
|
'first-bar': `${randomHeight}%`,
|
|
@@ -108,12 +111,12 @@ class AudioAnimationComponent {
|
|
|
108
111
|
ngOnDestroy() {
|
|
109
112
|
this.stopAnimation();
|
|
110
113
|
}
|
|
111
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
112
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
114
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: AudioAnimationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
115
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: AudioAnimationComponent, isStandalone: true, selector: "tgo-audio-animation", inputs: { volume: "volume", fakeData: "fakeData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"audio-animation-wrapper\">\n <section class=\"audio-animation-container\">\n <div\n class=\"sound-bar first-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['first-bar'] }\"\n ></div>\n <div\n class=\"sound-bar second-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['second-bar'] }\"\n ></div>\n <div\n class=\"sound-bar third-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['third-bar'] }\"\n ></div>\n </section>\n</div>\n\n", styles: [".audio-animation-wrapper{display:flex;justify-content:center;align-items:center}.audio-animation-wrapper .audio-animation-container{display:flex;justify-content:space-between;align-items:center;width:32px;height:24px;background-color:#4285f4;border-radius:25px;padding:5px 6.5px;box-shadow:0 4px 10px #0000001a}.audio-animation-wrapper .audio-animation-container .sound-bar{width:4px;background-color:#fff;height:20%;transition:height .2s ease-in-out;clip-path:ellipse(45% 30% at 50% 50%)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
113
116
|
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: AudioAnimationComponent, decorators: [{
|
|
115
118
|
type: Component,
|
|
116
|
-
args: [{ selector: 'tgo-audio-animation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule], template: "<div class=\"audio-animation-wrapper\">\
|
|
119
|
+
args: [{ selector: 'tgo-audio-animation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule], template: "<div class=\"audio-animation-wrapper\">\n <section class=\"audio-animation-container\">\n <div\n class=\"sound-bar first-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['first-bar'] }\"\n ></div>\n <div\n class=\"sound-bar second-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['second-bar'] }\"\n ></div>\n <div\n class=\"sound-bar third-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['third-bar'] }\"\n ></div>\n </section>\n</div>\n\n", styles: [".audio-animation-wrapper{display:flex;justify-content:center;align-items:center}.audio-animation-wrapper .audio-animation-container{display:flex;justify-content:space-between;align-items:center;width:32px;height:24px;background-color:#4285f4;border-radius:25px;padding:5px 6.5px;box-shadow:0 4px 10px #0000001a}.audio-animation-wrapper .audio-animation-container .sound-bar{width:4px;background-color:#fff;height:20%;transition:height .2s ease-in-out;clip-path:ellipse(45% 30% at 50% 50%)}\n"] }]
|
|
117
120
|
}], ctorParameters: () => [], propDecorators: { volume: [{
|
|
118
121
|
type: Input
|
|
119
122
|
}], fakeData: [{
|
|
@@ -205,10 +208,10 @@ class VimeoVideoComponent {
|
|
|
205
208
|
await this.vimeoPlayer.play();
|
|
206
209
|
}
|
|
207
210
|
}
|
|
208
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
209
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
211
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: VimeoVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
212
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: VimeoVideoComponent, isStandalone: true, selector: "tgo-vimeo-video", inputs: { videoUrl: "videoUrl", isPlaying: "isPlaying", options: "options" }, outputs: { videoEnded: "videoEnded", videoStarted: "videoStarted" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [".tgo-vimeo-video iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
210
213
|
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: VimeoVideoComponent, decorators: [{
|
|
212
215
|
type: Component,
|
|
213
216
|
args: [{ selector: 'tgo-vimeo-video', template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".tgo-vimeo-video iframe{position:absolute;top:0;left:0;width:100%;height:100%}\n"] }]
|
|
214
217
|
}], propDecorators: { class: [{
|
|
@@ -343,10 +346,10 @@ class MediaService {
|
|
|
343
346
|
: data.video,
|
|
344
347
|
};
|
|
345
348
|
}
|
|
346
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
347
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
349
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MediaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
350
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MediaService, providedIn: 'root' });
|
|
348
351
|
}
|
|
349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
352
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MediaService, decorators: [{
|
|
350
353
|
type: Injectable,
|
|
351
354
|
args: [{
|
|
352
355
|
providedIn: 'root',
|
|
@@ -368,10 +371,10 @@ class ThemeService {
|
|
|
368
371
|
.getPropertyValue(variableName)
|
|
369
372
|
.trim();
|
|
370
373
|
}
|
|
371
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
372
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
374
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
375
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ThemeService });
|
|
373
376
|
}
|
|
374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ThemeService, decorators: [{
|
|
375
378
|
type: Injectable
|
|
376
379
|
}] });
|
|
377
380
|
|
|
@@ -511,10 +514,10 @@ class ApiService {
|
|
|
511
514
|
}
|
|
512
515
|
return headers;
|
|
513
516
|
}
|
|
514
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
515
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
517
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ApiService, deps: [{ token: i1$1.HttpClient }, { token: i2.SnackbarService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
518
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ApiService });
|
|
516
519
|
}
|
|
517
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
520
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ApiService, decorators: [{
|
|
518
521
|
type: Injectable
|
|
519
522
|
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i2.SnackbarService }] });
|
|
520
523
|
|
|
@@ -639,10 +642,10 @@ class MockedApiService {
|
|
|
639
642
|
runtime_error: null,
|
|
640
643
|
};
|
|
641
644
|
}
|
|
642
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
643
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
645
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MockedApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
646
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MockedApiService });
|
|
644
647
|
}
|
|
645
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
648
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MockedApiService, decorators: [{
|
|
646
649
|
type: Injectable
|
|
647
650
|
}] });
|
|
648
651
|
|
|
@@ -650,10 +653,10 @@ class EnvironmentService {
|
|
|
650
653
|
get isMobile() {
|
|
651
654
|
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
|
652
655
|
}
|
|
653
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
654
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
656
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
657
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: EnvironmentService });
|
|
655
658
|
}
|
|
656
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
659
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: EnvironmentService, decorators: [{
|
|
657
660
|
type: Injectable
|
|
658
661
|
}] });
|
|
659
662
|
|
|
@@ -677,10 +680,10 @@ class MixpanelService {
|
|
|
677
680
|
console.error(error);
|
|
678
681
|
}
|
|
679
682
|
}
|
|
680
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
681
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
683
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MixpanelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
684
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MixpanelService });
|
|
682
685
|
}
|
|
683
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
686
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MixpanelService, decorators: [{
|
|
684
687
|
type: Injectable
|
|
685
688
|
}] });
|
|
686
689
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-shared-lib.mjs","sources":["../../../../packages/tgo-shared-lib/src/lib/components/audio-animation/audio-animation.component.ts","../../../../packages/tgo-shared-lib/src/lib/components/audio-animation/audio-animation.component.html","../../../../packages/tgo-shared-lib/src/lib/components/vimeo-video/vimeo-video.component.ts","../../../../packages/tgo-shared-lib/src/lib/models/translations.ts","../../../../packages/tgo-shared-lib/src/lib/services/media/media.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/theme/theme.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/localization/transloco-lazy-module-utils.ts","../../../../packages/tgo-shared-lib/src/lib/services/localization/languages.model.ts","../../../../packages/tgo-shared-lib/src/lib/services/localization/transloco-testing.module.ts","../../../../packages/tgo-shared-lib/src/lib/services/api/api.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/api/mocked-api.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/environment/environment.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/mixpanel/mixpanel.service.ts","../../../../packages/tgo-shared-lib/src/test-mocks/assessment-test.mock.ts","../../../../packages/tgo-shared-lib/src/test-mocks/tgo-ui.mock.ts","../../../../packages/tgo-shared-lib/src/testgorilla-tgo-shared-lib.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n computed,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tgo-audio-animation',\r\n templateUrl: './audio-animation.component.html',\r\n styleUrls: ['./audio-animation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CommonModule]\r\n})\r\nexport class AudioAnimationComponent implements OnChanges, OnDestroy {\r\n @Input() volume = 0;\r\n @Input() fakeData = false;\r\n\r\n private isAnimationRunning = false;\r\n private animationFrameId: number | null = null;\r\n private lastAnimationUpdate = performance.now();\r\n\r\n volumeSignal: WritableSignal<number> = signal(this.volume);\r\n barHeightsSignal = computed(() => this.getBarHeights(this.volumeSignal()));\r\n\r\n constructor() {\r\n this.startAnimation();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.volumeSignal.set(this.normalizeRealVolume(this.volume));\r\n\r\n if (this.fakeData) {\r\n this.startAnimation();\r\n } else {\r\n this.stopAnimation();\r\n }\r\n }\r\n\r\n private normalizeRealVolume(originalVolume: number): number {\r\n return Math.min(1, originalVolume * 10);\r\n }\r\n\r\n private startAnimation(): void {\r\n if (this.isAnimationRunning) {\r\n return;\r\n }\r\n\r\n this.isAnimationRunning = true;\r\n\r\n const animate = (timestamp: number) => {\r\n if (!this.isAnimationRunning) {\r\n return;\r\n }\r\n\r\n if (timestamp - this.lastAnimationUpdate > 200) {\r\n this.lastAnimationUpdate = timestamp;\r\n\r\n const newVolume = Math.random() * 0.8 + 0.2;\r\n\r\n this.volumeSignal.set(newVolume);\r\n }\r\n\r\n this.animationFrameId = requestAnimationFrame(animate);\r\n };\r\n\r\n this.animationFrameId = requestAnimationFrame(animate);\r\n }\r\n\r\n private stopAnimation(): void {\r\n this.isAnimationRunning = false;\r\n\r\n if (this.animationFrameId) {\r\n cancelAnimationFrame(this.animationFrameId);\r\n this.animationFrameId = null;\r\n }\r\n }\r\n\r\n private getBarHeights(volume: number): {\r\n 'first-bar': string;\r\n 'second-bar': string;\r\n 'third-bar': string;\r\n } {\r\n if (!this.fakeData && volume < 0.15) {\r\n return {\r\n 'first-bar': `42%`,\r\n 'second-bar': `42%`,\r\n 'third-bar': `42%`,\r\n };\r\n }\r\n\r\n let range: { min: number; max: number };\r\n\r\n this.fakeData\r\n ? (range = this.getFakeVolumeRange(volume))\r\n : (range = this.getRealVolumeRange(volume));\r\n\r\n const randomHeight = this.getRandomHeight(range.min, range.max);\r\n\r\n return {\r\n 'first-bar': `${randomHeight}%`,\r\n 'second-bar': `${randomHeight + 30}%`,\r\n 'third-bar': `${randomHeight}%`,\r\n };\r\n }\r\n\r\n private getFakeVolumeRange(volume: number): { min: number; max: number } {\r\n if (volume < 0.33) {\r\n return { min: 60, max: 90 };\r\n } else if (volume < 0.66) {\r\n return { min: 90, max: 120 };\r\n } else {\r\n return { min: 120, max: 140 };\r\n }\r\n }\r\n\r\n private getRealVolumeRange(volume: number): { min: number; max: number } {\r\n if (volume < 0.45) {\r\n return { min: 90, max: 90 };\r\n } else if (volume < 0.6) {\r\n return { min: 110, max: 110 };\r\n } else if (volume < 0.75) {\r\n return { min: 125, max: 125 };\r\n } else {\r\n return { min: 140, max: 140 };\r\n }\r\n }\r\n\r\n private getRandomHeight(min: number, max: number): number {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopAnimation();\r\n }\r\n}\r\n\r\n","<div class=\"audio-animation-wrapper\">\r\n <section class=\"audio-animation-container\">\r\n <div\r\n class=\"sound-bar first-bar\"\r\n [ngStyle]=\"{ height: barHeightsSignal()['first-bar'] }\"\r\n ></div>\r\n <div\r\n class=\"sound-bar second-bar\"\r\n [ngStyle]=\"{ height: barHeightsSignal()['second-bar'] }\"\r\n ></div>\r\n <div\r\n class=\"sound-bar third-bar\"\r\n [ngStyle]=\"{ height: barHeightsSignal()['third-bar'] }\"\r\n ></div>\r\n </section>\r\n</div>\r\n\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport Player from '@vimeo/player';\r\nimport type { VimeoEmbedParameters, VimeoUrl } from '@vimeo/player/types/formats';\r\n\r\n// Alias for compatibility\r\ntype Options = VimeoEmbedParameters;\r\n\r\n@Component({\r\n selector: 'tgo-vimeo-video',\r\n template: '',\r\n styleUrls: ['./vimeo-video.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class VimeoVideoComponent implements OnInit, OnDestroy, OnChanges {\r\n @HostBinding() class = 'tgo-vimeo-video';\r\n @Input() videoUrl = '';\r\n @Input() isPlaying = false;\r\n @Input() options: Options = {\r\n controls: false,\r\n autoplay: false,\r\n loop: false,\r\n speed: true,\r\n title: false,\r\n byline: false,\r\n quality: 'auto',\r\n autopause: false,\r\n };\r\n @Output() videoEnded = new EventEmitter<void>();\r\n @Output() videoStarted = new EventEmitter<void>();\r\n\r\n vimeoPlayer?: Player;\r\n\r\n private elRef = inject(ElementRef);\r\n\r\n async ngOnInit(): Promise<void> {\r\n await this.configureVimeoPlayer();\r\n }\r\n\r\n async ngOnDestroy(): Promise<void> {\r\n await this.removeVimeoPlayer();\r\n }\r\n\r\n async ngOnChanges(simpleChanges: SimpleChanges): Promise<void> {\r\n if (this.vimeoPlayer) {\r\n if (simpleChanges['videoUrl'] && !simpleChanges['videoUrl'].isFirstChange() && simpleChanges['videoUrl'].currentValue != simpleChanges['videoUrl'].previousValue && this.videoUrl) {\r\n\r\n await this.vimeoPlayer.loadVideo({\r\n url: this.videoUrl as any,\r\n start_time: 0,\r\n }).then(()=>{\r\n void this.vimeoPlayer?.setCurrentTime(0);\r\n setTimeout(() => {\r\n void this.vimeoPlayer?.play();\r\n }, 200);\r\n });\r\n\r\n }\r\n if (simpleChanges['isPlaying']) {\r\n if (this.isPlaying) {\r\n await this.vimeoPlayer.play();\r\n } else {\r\n await this.vimeoPlayer.pause();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private async removeVimeoPlayer(): Promise<void> {\r\n if (this.vimeoPlayer) {\r\n await this.vimeoPlayer.destroy();\r\n }\r\n }\r\n\r\n private async configureVimeoPlayer(): Promise<void> {\r\n const options: Options = {\r\n ...this.options,\r\n url: this.videoUrl as VimeoUrl,\r\n };\r\n try {\r\n await this.removeVimeoPlayer();\r\n this.vimeoPlayer = new Player(this.elRef.nativeElement as HTMLElement, options);\r\n this.vimeoPlayer.on('ended', () => {\r\n this.videoEnded.emit();\r\n this.isPlaying = false;\r\n this.vimeoPlayer?.pause();\r\n });\r\n this.vimeoPlayer.on('playing', () => {\r\n this.videoStarted.emit();\r\n });\r\n this.vimeoPlayer.on('pause', (event) => {\r\n if (this.isPlaying && event.percent < 1) {\r\n this.vimeoPlayer?.play();\r\n }\r\n });\r\n await this.playVideo();\r\n } catch (error) {\r\n await this.removeVimeoPlayer();\r\n throw error;\r\n }\r\n }\r\n\r\n private async playVideo() {\r\n if (this.vimeoPlayer && this.isPlaying) {\r\n await this.vimeoPlayer.play();\r\n }\r\n }\r\n}\r\n\r\n","export const ROOT_TRANSLATIONS_SCOPE = 'TEST';\r\n\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { SelectedMediaDevices } from '../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MediaService {\r\n private mediaRecorder: MediaRecorder | null = null;\r\n private selectedMediaDevices: SelectedMediaDevices | undefined;\r\n readonly isRecording = signal(false);\r\n\r\n stopRecording(): void {\r\n this.mediaRecorder?.stop();\r\n }\r\n\r\n getMediaStream(data: {\r\n audio: boolean;\r\n video: boolean;\r\n }): Promise<MediaStream> {\r\n return navigator.mediaDevices.getUserMedia(\r\n this.getMediaStreamConstraints(data)\r\n );\r\n }\r\n\r\n recordAudio(): Observable<\r\n { type: 'complete'; file: Blob } | { type: 'volume'; value: number }\r\n > {\r\n let checkPermissionPromise: Promise<boolean> | null;\r\n return new Observable((observer) => {\r\n void this.getMediaStream({ video: false, audio: true })\r\n .then((stream) => {\r\n this.mediaRecorder = new MediaRecorder(stream);\r\n this.mediaRecorder.start();\r\n this.isRecording.set(true);\r\n const audioChunks: Blob[] = [];\r\n this.mediaRecorder.ondataavailable = (event) => {\r\n audioChunks.push(event.data);\r\n };\r\n\r\n this.mediaRecorder.addEventListener('stop', () => {\r\n const audioBlob = new Blob(audioChunks, {\r\n type: 'audio/mp3',\r\n });\r\n observer.next({ type: 'complete', file: audioBlob });\r\n this.isRecording.set(false);\r\n observer.complete();\r\n });\r\n\r\n this.mediaRecorder.onerror = (error) => {\r\n observer.error(error);\r\n observer.complete();\r\n };\r\n\r\n const audioContext = new AudioContext();\r\n const mediaStreamAudioSourceNode =\r\n audioContext.createMediaStreamSource(stream);\r\n const analyserNode = audioContext.createAnalyser();\r\n mediaStreamAudioSourceNode.connect(analyserNode);\r\n\r\n const pcmData = new Float32Array(analyserNode.fftSize);\r\n const onFrame = () => {\r\n analyserNode.getFloatTimeDomainData(pcmData);\r\n let sumSquares = 0.0;\r\n for (const amplitude of pcmData) {\r\n sumSquares += amplitude * amplitude;\r\n }\r\n if (sumSquares > 0) {\r\n observer.next({\r\n type: 'volume',\r\n value: Math.sqrt(sumSquares / pcmData.length),\r\n });\r\n } else {\r\n if (!checkPermissionPromise) {\r\n checkPermissionPromise = this.checkPermission({\r\n video: false,\r\n audio: true,\r\n });\r\n\r\n checkPermissionPromise\r\n .then((hasPermission) => {\r\n if (!hasPermission) {\r\n observer.error(new Error('Permission denied'));\r\n observer.complete();\r\n }\r\n })\r\n .finally(() => {\r\n checkPermissionPromise = null;\r\n });\r\n }\r\n }\r\n\r\n if (!observer.closed) {\r\n window.requestAnimationFrame(onFrame);\r\n }\r\n };\r\n window.requestAnimationFrame(onFrame);\r\n })\r\n .catch((error) => {\r\n observer.error(error);\r\n observer.complete();\r\n });\r\n });\r\n }\r\n\r\n async playAudio(url: string): Promise<void> {\r\n const audio = new Audio(url);\r\n await audio.play();\r\n return new Promise((resolve, reject) => {\r\n audio.onended = () => {\r\n resolve();\r\n };\r\n audio.onerror = (event) => reject(event);\r\n });\r\n }\r\n\r\n setSelectedMediaDevices(data?: SelectedMediaDevices): void {\r\n this.selectedMediaDevices = data;\r\n }\r\n\r\n async checkPermission(data: {\r\n audio: boolean;\r\n video: boolean;\r\n }): Promise<boolean> {\r\n try {\r\n await this.getMediaStream(data);\r\n return true;\r\n } catch (err) {\r\n console.error(err);\r\n return false;\r\n }\r\n }\r\n\r\n private getMediaStreamConstraints(data: {\r\n audio: boolean;\r\n video: boolean;\r\n }): MediaStreamConstraints {\r\n const audioDeviceID = this.selectedMediaDevices?.audioDeviceId;\r\n const videoDeviceID = this.selectedMediaDevices?.videoDeviceId;\r\n return {\r\n audio:\r\n data.audio && audioDeviceID\r\n ? { deviceId: { exact: audioDeviceID } }\r\n : data.audio,\r\n video:\r\n data.video && videoDeviceID\r\n ? { deviceId: { exact: videoDeviceID } }\r\n : data.video,\r\n };\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\nenum THEME_VARS {\r\n COMPANY_COLOR = '--color-primary-50',\r\n}\r\n\r\n@Injectable()\r\nexport class ThemeService {\r\n private readonly BRAND_PINK_COLOR = '#D410AA';\r\n\r\n getCompanyColor(): string {\r\n return (\r\n this.getCSSVariableValue(THEME_VARS.COMPANY_COLOR) ||\r\n this.BRAND_PINK_COLOR\r\n );\r\n }\r\n\r\n private getCSSVariableValue(variableName: string): string {\r\n return getComputedStyle(document.documentElement)\r\n .getPropertyValue(variableName)\r\n .trim();\r\n }\r\n}\r\n\r\n","import { ValueProvider } from '@angular/core';\r\nimport { TRANSLOCO_SCOPE } from '@ngneat/transloco';\r\n\r\ninterface TranslocoInlineLoader {\r\n [key: string]: () => Promise<JSON>;\r\n}\r\n\r\n/**\r\n * The util is based on this issue https://github.com/jsverse/transloco/issues/608#issuecomment-1416113493\r\n *\r\n * Transloco can't have several forRoot modules. so the only way for now to decouple translations as a separate file and context\r\n * from the shell (TAS in this case) is to use TRANSLOCO_SCOPE\r\n */\r\nexport class TranslocoLazyModuleUtils {\r\n private static createInlineLoader(\r\n languages: Array<string>,\r\n loaderFn: (l: string) => Promise<JSON>\r\n ): TranslocoInlineLoader {\r\n const translocoInlineLoader: TranslocoInlineLoader = {};\r\n\r\n languages.forEach((language) => {\r\n translocoInlineLoader[language] = () => loaderFn(language);\r\n });\r\n\r\n return translocoInlineLoader;\r\n }\r\n\r\n public static getScopeProvider(\r\n scope: string,\r\n languages: Array<string>,\r\n alias: string,\r\n loaderFn: (l: string) => Promise<JSON>\r\n ): ValueProvider {\r\n return {\r\n provide: TRANSLOCO_SCOPE,\r\n useValue: {\r\n scope,\r\n alias,\r\n loader: this.createInlineLoader(languages, loaderFn),\r\n },\r\n };\r\n }\r\n}\r\n\r\n","//Languages available in the app as enum\r\nexport enum Language {\r\n en = 'en',\r\n es = 'es',\r\n nl = 'nl',\r\n fr = 'fr',\r\n de = 'de',\r\n 'it-it' = 'it-it',\r\n 'ja-jp' = 'ja-jp',\r\n 'pt-br' = 'pt-br',\r\n 'da-dk' = 'da-dk',\r\n 'nb-no' = 'nb-no',\r\n 'pl-pl' = 'pl-pl',\r\n 'sv-se' = 'sv-se',\r\n}\r\n\r\n//This function retrieves all languages from the enum. It is used to initialize transloco\r\nexport const getAvailableLangs = () => Object.values(Language);\r\n\r\n","import {\r\n TranslocoTestingModule,\r\n TranslocoTestingOptions,\r\n} from '@ngneat/transloco';\r\n\r\nexport const getTranslocoModule = (options: TranslocoTestingOptions = {}) =>\r\n TranslocoTestingModule.forRoot({\r\n translocoConfig: {\r\n reRenderOnLangChange: false,\r\n availableLangs: ['en'],\r\n defaultLang: 'en',\r\n },\r\n preloadLangs: true,\r\n ...options,\r\n });\r\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { translate } from '@ngneat/transloco';\r\nimport { SnackbarService } from '@testgorilla/tgo-ui';\r\nimport { EMPTY, Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ApiService {\r\n private invitationUUID = '';\r\n private contentLanguage = '';\r\n private ROOT_TRANSLATIONS_SCOPE = '';\r\n private baseUrl = '';\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private snackbarService: SnackbarService\r\n ) {}\r\n\r\n setParams(\r\n invitationUUID: string,\r\n contentLanguage: string,\r\n translationScope: string,\r\n baseUrl: string\r\n ): void {\r\n this.invitationUUID = invitationUUID;\r\n this.contentLanguage = contentLanguage;\r\n this.ROOT_TRANSLATIONS_SCOPE = translationScope;\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n getInvitationUUID(): string {\r\n return this.invitationUUID;\r\n }\r\n\r\n get<T>(\r\n url: string,\r\n options = {},\r\n errorCallback = this.handleError.bind(this)\r\n ): Observable<T> {\r\n return this.httpClient\r\n .get<T>(\r\n `${this.baseUrl}${url}`,\r\n this.buildHeaders(options)\r\n )\r\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\r\n }\r\n\r\n post<T>(\r\n url: string,\r\n data: object,\r\n options = {},\r\n errorCallback = this.handleError.bind(this),\r\n isStandaloneUrl = false\r\n ): Observable<T> {\r\n return this.httpClient\r\n .post<T>(\r\n isStandaloneUrl ? url : `${this.baseUrl}${url}`,\r\n data,\r\n this.buildHeaders(options)\r\n )\r\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\r\n }\r\n\r\n put<T>(\r\n url: string,\r\n data: object,\r\n options = {},\r\n errorCallback = this.handleError.bind(this)\r\n ): Observable<T> {\r\n return this.httpClient\r\n .put<T>(\r\n `${this.baseUrl}${url}`,\r\n data,\r\n this.buildHeaders(options)\r\n )\r\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\r\n }\r\n\r\n patch<T>(\r\n url: string,\r\n data: object,\r\n options = {},\r\n errorCallback = this.handleError.bind(this)\r\n ): Observable<T> {\r\n return this.httpClient\r\n .patch<T>(\r\n `${this.baseUrl}${url}`,\r\n data,\r\n this.buildHeaders(options)\r\n )\r\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\r\n }\r\n\r\n delete(\r\n url: string,\r\n errorCallback = this.handleError.bind(this)\r\n ): Observable<object> {\r\n return this.httpClient\r\n .delete(\r\n `${this.baseUrl}${url}`,\r\n this.buildHeaders({})\r\n )\r\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<object>;\r\n }\r\n\r\n private handleError(errorObj: HttpErrorResponse): Observable<never> {\r\n const { error } = errorObj;\r\n if (error?.errors?.length > 0) {\r\n return throwError(() => error.errors);\r\n } else {\r\n console.error(errorObj.message);\r\n this.snackbarService.error(this.processGenericServerError());\r\n\r\n return EMPTY;\r\n }\r\n }\r\n\r\n private processGenericServerError(): string {\r\n return translate(`${this.ROOT_TRANSLATIONS_SCOPE}.ERRORS.SYSTEM_ERROR`);\r\n }\r\n\r\n private buildHeaders(options: object): object {\r\n if (typeof window.crypto.randomUUID === 'function') {\r\n options = {\r\n ...options,\r\n 'X-REQUEST-ID': window.crypto.randomUUID(),\r\n 'X-INVITATION-UUID': this.invitationUUID,\r\n };\r\n }\r\n\r\n const passedAuthorizationHeader = (options as { [key: string]: any })[\r\n 'Authorization'\r\n ];\r\n const headers: { headers: { [header: string]: string } } = {\r\n headers: {\r\n ...options,\r\n Authorization: passedAuthorizationHeader\r\n ? passedAuthorizationHeader\r\n : `TokenCandidature ${this.invitationUUID?.replace(/-/g, '')}`,\r\n },\r\n };\r\n\r\n if (this.contentLanguage) {\r\n headers.headers['Accept-Language'] = this.contentLanguage;\r\n }\r\n\r\n return headers;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of, delay } from 'rxjs';\r\n\r\n/**\r\n * MockedApiService provides fake API responses for demo/development purposes.\r\n * This service mimics the real ApiService interface but returns mock data instead\r\n * of making actual HTTP calls.\r\n *\r\n * Usage: Provide this service in place of ApiService in your demo application:\r\n * ```\r\n * { provide: ApiService, useClass: MockedApiService }\r\n * ```\r\n */\r\n@Injectable()\r\nexport class MockedApiService {\r\n private invitationUUID = 'demo-uuid-12345';\r\n private contentLanguage = 'en';\r\n private ROOT_TRANSLATIONS_SCOPE = '';\r\n\r\n // Simulate network delay (in ms) - set to 0 for instant responses\r\n private readonly MOCK_DELAY = 500;\r\n\r\n setParams(\r\n invitationUUID: string,\r\n contentLanguage: string,\r\n translationScope: string,\r\n baseUrl: string\r\n ): void {\r\n this.invitationUUID = invitationUUID;\r\n this.contentLanguage = contentLanguage;\r\n this.ROOT_TRANSLATIONS_SCOPE = translationScope;\r\n console.log('[MockedApiService] Params set:', {\r\n invitationUUID,\r\n contentLanguage,\r\n translationScope,\r\n baseUrl,\r\n });\r\n }\r\n\r\n getInvitationUUID(): string {\r\n return this.invitationUUID;\r\n }\r\n\r\n get<T>(\r\n url: string,\r\n options = {},\r\n errorCallback?: (error: any) => Observable<never>\r\n ): Observable<T> {\r\n console.log('[MockedApiService] GET:', url, options);\r\n return of(this.getMockResponse<T>(url, 'GET') as T).pipe(\r\n delay(this.MOCK_DELAY)\r\n );\r\n }\r\n\r\n post<T>(\r\n url: string,\r\n data: object,\r\n options = {},\r\n errorCallback?: (error: any) => Observable<never>,\r\n isStandaloneUrl = false\r\n ): Observable<T> {\r\n console.log('[MockedApiService] POST:', url, data, options);\r\n return of(this.getMockResponse<T>(url, 'POST', data) as T).pipe(\r\n delay(this.MOCK_DELAY)\r\n );\r\n }\r\n\r\n put<T>(\r\n url: string,\r\n data: object,\r\n options = {},\r\n errorCallback?: (error: any) => Observable<never>\r\n ): Observable<T> {\r\n console.log('[MockedApiService] PUT:', url, data, options);\r\n return of(this.getMockResponse<T>(url, 'PUT', data) as T).pipe(\r\n delay(this.MOCK_DELAY)\r\n );\r\n }\r\n\r\n patch<T>(\r\n url: string,\r\n data: object,\r\n options = {},\r\n errorCallback?: (error: any) => Observable<never>\r\n ): Observable<T> {\r\n console.log('[MockedApiService] PATCH:', url, data, options);\r\n return of(this.getMockResponse<T>(url, 'PATCH', data) as T).pipe(\r\n delay(this.MOCK_DELAY)\r\n );\r\n }\r\n\r\n delete(\r\n url: string,\r\n errorCallback?: (error: any) => Observable<never>\r\n ): Observable<object> {\r\n console.log('[MockedApiService] DELETE:', url);\r\n return of({}).pipe(delay(this.MOCK_DELAY));\r\n }\r\n\r\n /**\r\n * Returns mock responses based on the URL pattern\r\n */\r\n private getMockResponse<T>(url: string, method: string, data?: object): T | object {\r\n // CodeRunner API - Run Tests\r\n if (url.includes('/api/attempts/public/')) {\r\n return this.getMockCoderunnerAttemptResponse(data);\r\n }\r\n\r\n if (url.includes('/api/attempts/preview/')) {\r\n return this.getMockCoderunnerAttemptResponse(data);\r\n }\r\n\r\n if (url.includes('/api/attempts/')) {\r\n return this.getMockCoderunnerAttemptResponse(data);\r\n }\r\n\r\n // Code Events\r\n if (url.includes('/api/code-events/')) {\r\n return {\r\n id: Math.floor(Math.random() * 10000),\r\n created_at: new Date().toISOString(),\r\n };\r\n }\r\n\r\n // Programming Languages\r\n if (url.includes('programming-languages')) {\r\n return []; // Mock all languages\r\n }\r\n\r\n // Default response\r\n console.warn(`[MockedApiService] No mock defined for ${method} ${url}`);\r\n return { success: true, data: null };\r\n }\r\n\r\n /**\r\n * Returns a mock coderunner attempt response with test results\r\n */\r\n private getMockCoderunnerAttemptResponse(data?: object): object {\r\n const requestData = data as any;\r\n const testcases = requestData?.testcases || [];\r\n\r\n // Generate mock results for each test case\r\n const results = testcases.map((testcase: any, index: number) => {\r\n // Make first test pass, others random for variety\r\n const passed = index === 0 ? true : Math.random() > 0.3;\r\n\r\n return {\r\n name: testcase.name || `Test Case ${index + 1}`,\r\n passed,\r\n expected: testcase.solution || testcase.expected_output || 'Expected output',\r\n actual: passed\r\n ? testcase.solution || testcase.expected_output || 'Expected output'\r\n : 'Different output',\r\n input: testcase.input || '',\r\n error: passed ? null : 'AssertionError: Output does not match expected',\r\n execution_time: Math.random() * 100,\r\n memory_used: Math.floor(Math.random() * 1000000),\r\n points: passed ? (testcase.points || 10) : 0,\r\n };\r\n });\r\n\r\n const totalPoints = results.reduce((sum: number, r: any) => sum + r.points, 0);\r\n const maxPoints = testcases.reduce(\r\n (sum: number, tc: any) => sum + (tc.points || 10),\r\n 0\r\n );\r\n\r\n return {\r\n id: Math.floor(Math.random() * 100000),\r\n uuid: crypto.randomUUID(),\r\n created_at: new Date().toISOString(),\r\n language: requestData?.language || 'python-3.10.0',\r\n code: requestData?.code || '',\r\n status: 'completed',\r\n results,\r\n score: maxPoints > 0 ? (totalPoints / maxPoints) * 100 : 0,\r\n total_points: totalPoints,\r\n max_points: maxPoints,\r\n execution_time: results.reduce((sum: number, r: any) => sum + r.execution_time, 0),\r\n compilation_error: null,\r\n runtime_error: null,\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class EnvironmentService {\r\n get isMobile(): boolean {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as mixpanel from 'mixpanel-browser';\r\nimport '../../models/window';\r\n\r\n@Injectable()\r\nexport class MixpanelService {\r\n private mixpanel: typeof window.mixpanel | null = null;\r\n\r\n track(eventName: string, properties: mixpanel.Dict = {}): void {\r\n if (this.mixpanel) {\r\n return this.sendTrackEvent(eventName, properties);\r\n }\r\n\r\n if (window.mixpanel) {\r\n this.mixpanel = window.mixpanel;\r\n return this.sendTrackEvent(eventName, properties);\r\n }\r\n\r\n console.error('Mixpanel is not initialized or not available');\r\n }\r\n\r\n private sendTrackEvent(eventName: string, properties: mixpanel.Dict = {}): void {\r\n try {\r\n this.mixpanel!.track(eventName, properties);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","import { Assessment } from '../lib/models/assessment';\r\nimport { Question } from '../lib/models/question';\r\nimport { TestResultRead } from '../lib/models/test-result';\r\n\r\nexport const mockAssessment: Assessment = {\r\n uuid: 'fa67cd96-2a4c-490a-9a44-b11f759f228a',\r\n locale: 'en',\r\n is_snapshots_enabled: true,\r\n has_video_question: false,\r\n allow_non_native_speakers: true,\r\n allow_other_conditions: true,\r\n general_settings: {\r\n id: 2157,\r\n owner_profile_id: 271652,\r\n company_name: 'x',\r\n company_color: '#46a997',\r\n company_logo: '',\r\n company_redirect_url: null,\r\n has_requested_demographic_details: true,\r\n has_requested_feedback: true,\r\n original_modified: '2024-01-16T20:30:04.054308Z',\r\n },\r\n sharing_results: true,\r\n};\r\n\r\nexport const mockQuestion: Question = {\r\n id: 747282,\r\n text: '<p>Charlie was a flight attendant _______ seven years.</p>',\r\n type: 'code',\r\n context: {\r\n intro_text: null,\r\n answers: [\r\n {\r\n id: 578594,\r\n text: '<p>during</p>',\r\n answer_uuid: 'cf98b452-2704-44fa-adce-d5d93ad7c643',\r\n },\r\n {\r\n id: 578596,\r\n text: '<p>through</p>',\r\n answer_uuid: '8e848dc4-a0cf-4c8d-b8d0-42b0fc85b19f',\r\n },\r\n {\r\n id: 578595,\r\n text: '<p>after</p>',\r\n answer_uuid: '1e97f320-7d22-4dec-8555-1aa8228df131',\r\n },\r\n {\r\n id: 578593,\r\n text: '<p>for</p>',\r\n answer_uuid: 'ccc648cc-435b-460a-89e8-432d13574e1e',\r\n },\r\n ],\r\n initial_code: null,\r\n code_language: null,\r\n typing_test_type: null,\r\n typing_test_config: null,\r\n typing_test_mode: {\r\n numbers: false,\r\n punctuation: false,\r\n funbox: 'none',\r\n sentences: false,\r\n },\r\n long_answer_list: false,\r\n max_items: 100,\r\n min_items: 0,\r\n duration: null,\r\n attempts: 0,\r\n },\r\n} as unknown as Question;\r\n\r\nexport const mockTestResultRead: TestResultRead = {\r\n id: 123,\r\n test: {\r\n id: 1,\r\n name: 'test-name',\r\n duration: 100,\r\n algorithm: 'testAlgorithm',\r\n },\r\n locale: 'en-EN',\r\n order: 1,\r\n is_preview_mode: true,\r\n};\r\n\r\nexport const mockSQLTestCases = [\r\n {\r\n category: 'Test Category 1',\r\n id: 1,\r\n initial_sql: 'Test Initial SQL',\r\n name: 'Test Name 1',\r\n post_sql: 'Test Post SQL 1',\r\n pre_sql: 'Test Pre SQL 1',\r\n result: 'Test Result 1',\r\n },\r\n {\r\n category: 'Test Category 2',\r\n id: 2,\r\n initial_sql: 'Test Initial SQL',\r\n name: 'Test Name 2',\r\n post_sql: 'Test Post SQL 2',\r\n pre_sql: 'Test Pre SQL 2',\r\n result: 'Test Result 2',\r\n },\r\n];\r\n\r\nexport const mockTestCases = [\r\n {\r\n name: 'Test Case 1',\r\n input: 'Test Input 1',\r\n solution: 'Test Solution 1',\r\n points: 10,\r\n },\r\n {\r\n name: 'Test Case 2',\r\n input: 'Test Input 2',\r\n solution: 'Test Solution 2',\r\n points: 20,\r\n },\r\n];\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\ndeclare const jest: any;\r\n\r\n// Mock modules\r\nexport const ButtonComponentModule = NgModule({\r\n imports: [CommonModule],\r\n declarations: [],\r\n exports: [],\r\n})(class {});\r\n\r\nexport const IconComponentModule = NgModule({\r\n imports: [CommonModule],\r\n declarations: [],\r\n exports: [],\r\n})(class {});\r\n\r\nexport const CardComponentModule = NgModule({\r\n imports: [CommonModule],\r\n declarations: [],\r\n exports: [],\r\n})(class {});\r\n\r\nexport const DialogComponentModule = NgModule({\r\n imports: [CommonModule],\r\n declarations: [],\r\n exports: [],\r\n})(class {});\r\n\r\n// Mock DialogService\r\nexport class DialogService {\r\n open = jest.fn();\r\n}\r\n\r\n// Mock SnackbarService\r\nexport class SnackbarService {\r\n error = jest.fn();\r\n}\r\n\r\n// Export all other potential exports as empty objects\r\nexport const QuillViewComponent = class {};\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-shared-lib.mjs","sources":["../../../../packages/tgo-shared-lib/src/lib/components/audio-animation/audio-animation.component.ts","../../../../packages/tgo-shared-lib/src/lib/components/audio-animation/audio-animation.component.html","../../../../packages/tgo-shared-lib/src/lib/components/vimeo-video/vimeo-video.component.ts","../../../../packages/tgo-shared-lib/src/lib/models/translations.ts","../../../../packages/tgo-shared-lib/src/lib/services/media/media.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/theme/theme.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/localization/transloco-lazy-module-utils.ts","../../../../packages/tgo-shared-lib/src/lib/services/localization/languages.model.ts","../../../../packages/tgo-shared-lib/src/lib/services/localization/transloco-testing.module.ts","../../../../packages/tgo-shared-lib/src/lib/services/api/api.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/api/mocked-api.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/environment/environment.service.ts","../../../../packages/tgo-shared-lib/src/lib/services/mixpanel/mixpanel.service.ts","../../../../packages/tgo-shared-lib/src/test-mocks/assessment-test.mock.ts","../../../../packages/tgo-shared-lib/src/test-mocks/tgo-ui.mock.ts","../../../../packages/tgo-shared-lib/src/testgorilla-tgo-shared-lib.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n ViewEncapsulation,\n WritableSignal,\n computed,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'tgo-audio-animation',\n templateUrl: './audio-animation.component.html',\n styleUrls: ['./audio-animation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule]\n})\nexport class AudioAnimationComponent implements OnChanges, OnDestroy {\n @Input() volume = 0;\n @Input() fakeData = false;\n\n private isAnimationRunning = false;\n private animationFrameId: number | null = null;\n private lastAnimationUpdate = performance.now();\n\n volumeSignal: WritableSignal<number> = signal(this.volume);\n barHeightsSignal = computed(() => this.getBarHeights(this.volumeSignal()));\n\n constructor() {\n this.startAnimation();\n }\n\n ngOnChanges(): void {\n this.volumeSignal.set(this.normalizeRealVolume(this.volume));\n\n if (this.fakeData) {\n this.startAnimation();\n } else {\n this.stopAnimation();\n }\n }\n\n private normalizeRealVolume(originalVolume: number): number {\n return Math.min(1, originalVolume * 10);\n }\n\n private startAnimation(): void {\n if (this.isAnimationRunning) {\n return;\n }\n\n this.isAnimationRunning = true;\n\n const animate = (timestamp: number) => {\n if (!this.isAnimationRunning) {\n return;\n }\n\n if (timestamp - this.lastAnimationUpdate > 200) {\n this.lastAnimationUpdate = timestamp;\n\n const newVolume = Math.random() * 0.8 + 0.2;\n\n this.volumeSignal.set(newVolume);\n }\n\n this.animationFrameId = requestAnimationFrame(animate);\n };\n\n this.animationFrameId = requestAnimationFrame(animate);\n }\n\n private stopAnimation(): void {\n this.isAnimationRunning = false;\n\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n }\n\n private getBarHeights(volume: number): {\n 'first-bar': string;\n 'second-bar': string;\n 'third-bar': string;\n } {\n if (!this.fakeData && volume < 0.15) {\n return {\n 'first-bar': `42%`,\n 'second-bar': `42%`,\n 'third-bar': `42%`,\n };\n }\n\n let range: { min: number; max: number };\n\n if (this.fakeData) {\n range = this.getFakeVolumeRange(volume);\n } else {\n range = this.getRealVolumeRange(volume);\n }\n\n const randomHeight = this.getRandomHeight(range.min, range.max);\n\n return {\n 'first-bar': `${randomHeight}%`,\n 'second-bar': `${randomHeight + 30}%`,\n 'third-bar': `${randomHeight}%`,\n };\n }\n\n private getFakeVolumeRange(volume: number): { min: number; max: number } {\n if (volume < 0.33) {\n return { min: 60, max: 90 };\n } else if (volume < 0.66) {\n return { min: 90, max: 120 };\n } else {\n return { min: 120, max: 140 };\n }\n }\n\n private getRealVolumeRange(volume: number): { min: number; max: number } {\n if (volume < 0.45) {\n return { min: 90, max: 90 };\n } else if (volume < 0.6) {\n return { min: 110, max: 110 };\n } else if (volume < 0.75) {\n return { min: 125, max: 125 };\n } else {\n return { min: 140, max: 140 };\n }\n }\n\n private getRandomHeight(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n ngOnDestroy(): void {\n this.stopAnimation();\n }\n}\n\n","<div class=\"audio-animation-wrapper\">\n <section class=\"audio-animation-container\">\n <div\n class=\"sound-bar first-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['first-bar'] }\"\n ></div>\n <div\n class=\"sound-bar second-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['second-bar'] }\"\n ></div>\n <div\n class=\"sound-bar third-bar\"\n [ngStyle]=\"{ height: barHeightsSignal()['third-bar'] }\"\n ></div>\n </section>\n</div>\n\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport Player from '@vimeo/player';\nimport type { VimeoEmbedParameters, VimeoUrl } from '@vimeo/player/types/formats';\n\n// Alias for compatibility\ntype Options = VimeoEmbedParameters;\n\n@Component({\n selector: 'tgo-vimeo-video',\n template: '',\n styleUrls: ['./vimeo-video.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class VimeoVideoComponent implements OnInit, OnDestroy, OnChanges {\n @HostBinding() class = 'tgo-vimeo-video';\n @Input() videoUrl = '';\n @Input() isPlaying = false;\n @Input() options: Options = {\n controls: false,\n autoplay: false,\n loop: false,\n speed: true,\n title: false,\n byline: false,\n quality: 'auto',\n autopause: false,\n };\n @Output() videoEnded = new EventEmitter<void>();\n @Output() videoStarted = new EventEmitter<void>();\n\n vimeoPlayer?: Player;\n\n private elRef = inject(ElementRef);\n\n async ngOnInit(): Promise<void> {\n await this.configureVimeoPlayer();\n }\n\n async ngOnDestroy(): Promise<void> {\n await this.removeVimeoPlayer();\n }\n\n async ngOnChanges(simpleChanges: SimpleChanges): Promise<void> {\n if (this.vimeoPlayer) {\n if (simpleChanges['videoUrl'] && !simpleChanges['videoUrl'].isFirstChange() && simpleChanges['videoUrl'].currentValue != simpleChanges['videoUrl'].previousValue && this.videoUrl) {\n\n await this.vimeoPlayer.loadVideo({\n url: this.videoUrl as any,\n start_time: 0,\n }).then(()=>{\n void this.vimeoPlayer?.setCurrentTime(0);\n setTimeout(() => {\n void this.vimeoPlayer?.play();\n }, 200);\n });\n\n }\n if (simpleChanges['isPlaying']) {\n if (this.isPlaying) {\n await this.vimeoPlayer.play();\n } else {\n await this.vimeoPlayer.pause();\n }\n }\n }\n }\n\n private async removeVimeoPlayer(): Promise<void> {\n if (this.vimeoPlayer) {\n await this.vimeoPlayer.destroy();\n }\n }\n\n private async configureVimeoPlayer(): Promise<void> {\n const options: Options = {\n ...this.options,\n url: this.videoUrl as VimeoUrl,\n };\n try {\n await this.removeVimeoPlayer();\n this.vimeoPlayer = new Player(this.elRef.nativeElement as HTMLElement, options);\n this.vimeoPlayer.on('ended', () => {\n this.videoEnded.emit();\n this.isPlaying = false;\n this.vimeoPlayer?.pause();\n });\n this.vimeoPlayer.on('playing', () => {\n this.videoStarted.emit();\n });\n this.vimeoPlayer.on('pause', (event) => {\n if (this.isPlaying && event.percent < 1) {\n this.vimeoPlayer?.play();\n }\n });\n await this.playVideo();\n } catch (error) {\n await this.removeVimeoPlayer();\n throw error;\n }\n }\n\n private async playVideo() {\n if (this.vimeoPlayer && this.isPlaying) {\n await this.vimeoPlayer.play();\n }\n }\n}\n\n","export const ROOT_TRANSLATIONS_SCOPE = 'TEST';\n\n","import { Injectable, signal } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SelectedMediaDevices } from '../../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MediaService {\n private mediaRecorder: MediaRecorder | null = null;\n private selectedMediaDevices: SelectedMediaDevices | undefined;\n readonly isRecording = signal(false);\n\n stopRecording(): void {\n this.mediaRecorder?.stop();\n }\n\n getMediaStream(data: {\n audio: boolean;\n video: boolean;\n }): Promise<MediaStream> {\n return navigator.mediaDevices.getUserMedia(\n this.getMediaStreamConstraints(data)\n );\n }\n\n recordAudio(): Observable<\n { type: 'complete'; file: Blob } | { type: 'volume'; value: number }\n > {\n let checkPermissionPromise: Promise<boolean> | null;\n return new Observable((observer) => {\n void this.getMediaStream({ video: false, audio: true })\n .then((stream) => {\n this.mediaRecorder = new MediaRecorder(stream);\n this.mediaRecorder.start();\n this.isRecording.set(true);\n const audioChunks: Blob[] = [];\n this.mediaRecorder.ondataavailable = (event) => {\n audioChunks.push(event.data);\n };\n\n this.mediaRecorder.addEventListener('stop', () => {\n const audioBlob = new Blob(audioChunks, {\n type: 'audio/mp3',\n });\n observer.next({ type: 'complete', file: audioBlob });\n this.isRecording.set(false);\n observer.complete();\n });\n\n this.mediaRecorder.onerror = (error) => {\n observer.error(error);\n observer.complete();\n };\n\n const audioContext = new AudioContext();\n const mediaStreamAudioSourceNode =\n audioContext.createMediaStreamSource(stream);\n const analyserNode = audioContext.createAnalyser();\n mediaStreamAudioSourceNode.connect(analyserNode);\n\n const pcmData = new Float32Array(analyserNode.fftSize);\n const onFrame = () => {\n analyserNode.getFloatTimeDomainData(pcmData);\n let sumSquares = 0.0;\n for (const amplitude of pcmData) {\n sumSquares += amplitude * amplitude;\n }\n if (sumSquares > 0) {\n observer.next({\n type: 'volume',\n value: Math.sqrt(sumSquares / pcmData.length),\n });\n } else {\n if (!checkPermissionPromise) {\n checkPermissionPromise = this.checkPermission({\n video: false,\n audio: true,\n });\n\n checkPermissionPromise\n .then((hasPermission) => {\n if (!hasPermission) {\n observer.error(new Error('Permission denied'));\n observer.complete();\n }\n })\n .finally(() => {\n checkPermissionPromise = null;\n });\n }\n }\n\n if (!observer.closed) {\n window.requestAnimationFrame(onFrame);\n }\n };\n window.requestAnimationFrame(onFrame);\n })\n .catch((error) => {\n observer.error(error);\n observer.complete();\n });\n });\n }\n\n async playAudio(url: string): Promise<void> {\n const audio = new Audio(url);\n await audio.play();\n return new Promise((resolve, reject) => {\n audio.onended = () => {\n resolve();\n };\n audio.onerror = (event) => reject(event);\n });\n }\n\n setSelectedMediaDevices(data?: SelectedMediaDevices): void {\n this.selectedMediaDevices = data;\n }\n\n async checkPermission(data: {\n audio: boolean;\n video: boolean;\n }): Promise<boolean> {\n try {\n await this.getMediaStream(data);\n return true;\n } catch (err) {\n console.error(err);\n return false;\n }\n }\n\n private getMediaStreamConstraints(data: {\n audio: boolean;\n video: boolean;\n }): MediaStreamConstraints {\n const audioDeviceID = this.selectedMediaDevices?.audioDeviceId;\n const videoDeviceID = this.selectedMediaDevices?.videoDeviceId;\n return {\n audio:\n data.audio && audioDeviceID\n ? { deviceId: { exact: audioDeviceID } }\n : data.audio,\n video:\n data.video && videoDeviceID\n ? { deviceId: { exact: videoDeviceID } }\n : data.video,\n };\n }\n}\n\n","import { Injectable } from '@angular/core';\n\nenum THEME_VARS {\n COMPANY_COLOR = '--color-primary-50',\n}\n\n@Injectable()\nexport class ThemeService {\n private readonly BRAND_PINK_COLOR = '#D410AA';\n\n getCompanyColor(): string {\n return (\n this.getCSSVariableValue(THEME_VARS.COMPANY_COLOR) ||\n this.BRAND_PINK_COLOR\n );\n }\n\n private getCSSVariableValue(variableName: string): string {\n return getComputedStyle(document.documentElement)\n .getPropertyValue(variableName)\n .trim();\n }\n}\n\n","import { ValueProvider } from '@angular/core';\nimport { TRANSLOCO_SCOPE } from '@ngneat/transloco';\n\ninterface TranslocoInlineLoader {\n [key: string]: () => Promise<JSON>;\n}\n\n/**\n * The util is based on this issue https://github.com/jsverse/transloco/issues/608#issuecomment-1416113493\n *\n * Transloco can't have several forRoot modules. so the only way for now to decouple translations as a separate file and context\n * from the shell (TAS in this case) is to use TRANSLOCO_SCOPE\n */\nexport class TranslocoLazyModuleUtils {\n private static createInlineLoader(\n languages: Array<string>,\n loaderFn: (l: string) => Promise<JSON>\n ): TranslocoInlineLoader {\n const translocoInlineLoader: TranslocoInlineLoader = {};\n\n languages.forEach((language) => {\n translocoInlineLoader[language] = () => loaderFn(language);\n });\n\n return translocoInlineLoader;\n }\n\n public static getScopeProvider(\n scope: string,\n languages: Array<string>,\n alias: string,\n loaderFn: (l: string) => Promise<JSON>\n ): ValueProvider {\n return {\n provide: TRANSLOCO_SCOPE,\n useValue: {\n scope,\n alias,\n loader: this.createInlineLoader(languages, loaderFn),\n },\n };\n }\n}\n\n","//Languages available in the app as enum\nexport enum Language {\n en = 'en',\n es = 'es',\n nl = 'nl',\n fr = 'fr',\n de = 'de',\n 'it-it' = 'it-it',\n 'ja-jp' = 'ja-jp',\n 'pt-br' = 'pt-br',\n 'da-dk' = 'da-dk',\n 'nb-no' = 'nb-no',\n 'pl-pl' = 'pl-pl',\n 'sv-se' = 'sv-se',\n}\n\n//This function retrieves all languages from the enum. It is used to initialize transloco\nexport const getAvailableLangs = () => Object.values(Language);\n\n","import {\n TranslocoTestingModule,\n TranslocoTestingOptions,\n} from '@ngneat/transloco';\n\nexport const getTranslocoModule = (options: TranslocoTestingOptions = {}) =>\n TranslocoTestingModule.forRoot({\n translocoConfig: {\n reRenderOnLangChange: false,\n availableLangs: ['en'],\n defaultLang: 'en',\n },\n preloadLangs: true,\n ...options,\n });\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { translate } from '@ngneat/transloco';\nimport { SnackbarService } from '@testgorilla/tgo-ui/components/snackbar';\nimport { EMPTY, Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable()\nexport class ApiService {\n private invitationUUID = '';\n private contentLanguage = '';\n private ROOT_TRANSLATIONS_SCOPE = '';\n private baseUrl = '';\n\n constructor(\n private httpClient: HttpClient,\n private snackbarService: SnackbarService\n ) {}\n\n setParams(\n invitationUUID: string,\n contentLanguage: string,\n translationScope: string,\n baseUrl: string\n ): void {\n this.invitationUUID = invitationUUID;\n this.contentLanguage = contentLanguage;\n this.ROOT_TRANSLATIONS_SCOPE = translationScope;\n this.baseUrl = baseUrl;\n }\n\n getInvitationUUID(): string {\n return this.invitationUUID;\n }\n\n get<T>(\n url: string,\n options = {},\n errorCallback = this.handleError.bind(this)\n ): Observable<T> {\n return this.httpClient\n .get<T>(\n `${this.baseUrl}${url}`,\n this.buildHeaders(options)\n )\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\n }\n\n post<T>(\n url: string,\n data: object,\n options = {},\n errorCallback = this.handleError.bind(this),\n isStandaloneUrl = false\n ): Observable<T> {\n return this.httpClient\n .post<T>(\n isStandaloneUrl ? url : `${this.baseUrl}${url}`,\n data,\n this.buildHeaders(options)\n )\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\n }\n\n put<T>(\n url: string,\n data: object,\n options = {},\n errorCallback = this.handleError.bind(this)\n ): Observable<T> {\n return this.httpClient\n .put<T>(\n `${this.baseUrl}${url}`,\n data,\n this.buildHeaders(options)\n )\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\n }\n\n patch<T>(\n url: string,\n data: object,\n options = {},\n errorCallback = this.handleError.bind(this)\n ): Observable<T> {\n return this.httpClient\n .patch<T>(\n `${this.baseUrl}${url}`,\n data,\n this.buildHeaders(options)\n )\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<T>;\n }\n\n delete(\n url: string,\n errorCallback = this.handleError.bind(this)\n ): Observable<object> {\n return this.httpClient\n .delete(\n `${this.baseUrl}${url}`,\n this.buildHeaders({})\n )\n .pipe(catchError((error: HttpErrorResponse) => errorCallback(error))) as Observable<object>;\n }\n\n private handleError(errorObj: HttpErrorResponse): Observable<never> {\n const { error } = errorObj;\n if (error?.errors?.length > 0) {\n return throwError(() => error.errors);\n } else {\n console.error(errorObj.message);\n this.snackbarService.error(this.processGenericServerError());\n\n return EMPTY;\n }\n }\n\n private processGenericServerError(): string {\n return translate(`${this.ROOT_TRANSLATIONS_SCOPE}.ERRORS.SYSTEM_ERROR`);\n }\n\n private buildHeaders(options: object): object {\n if (typeof window.crypto.randomUUID === 'function') {\n options = {\n ...options,\n 'X-REQUEST-ID': window.crypto.randomUUID(),\n 'X-INVITATION-UUID': this.invitationUUID,\n };\n }\n\n const passedAuthorizationHeader = (options as { [key: string]: any })[\n 'Authorization'\n ];\n const headers: { headers: { [header: string]: string } } = {\n headers: {\n ...options,\n Authorization: passedAuthorizationHeader\n ? passedAuthorizationHeader\n : `TokenCandidature ${this.invitationUUID?.replace(/-/g, '')}`,\n },\n };\n\n if (this.contentLanguage) {\n headers.headers['Accept-Language'] = this.contentLanguage;\n }\n\n return headers;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of, delay } from 'rxjs';\n\n/**\n * MockedApiService provides fake API responses for demo/development purposes.\n * This service mimics the real ApiService interface but returns mock data instead\n * of making actual HTTP calls.\n *\n * Usage: Provide this service in place of ApiService in your demo application:\n * ```\n * { provide: ApiService, useClass: MockedApiService }\n * ```\n */\n@Injectable()\nexport class MockedApiService {\n private invitationUUID = 'demo-uuid-12345';\n private contentLanguage = 'en';\n private ROOT_TRANSLATIONS_SCOPE = '';\n\n // Simulate network delay (in ms) - set to 0 for instant responses\n private readonly MOCK_DELAY = 500;\n\n setParams(\n invitationUUID: string,\n contentLanguage: string,\n translationScope: string,\n baseUrl: string\n ): void {\n this.invitationUUID = invitationUUID;\n this.contentLanguage = contentLanguage;\n this.ROOT_TRANSLATIONS_SCOPE = translationScope;\n console.log('[MockedApiService] Params set:', {\n invitationUUID,\n contentLanguage,\n translationScope,\n baseUrl,\n });\n }\n\n getInvitationUUID(): string {\n return this.invitationUUID;\n }\n\n get<T>(\n url: string,\n options = {},\n errorCallback?: (error: any) => Observable<never>\n ): Observable<T> {\n console.log('[MockedApiService] GET:', url, options);\n return of(this.getMockResponse<T>(url, 'GET') as T).pipe(\n delay(this.MOCK_DELAY)\n );\n }\n\n post<T>(\n url: string,\n data: object,\n options = {},\n errorCallback?: (error: any) => Observable<never>,\n isStandaloneUrl = false\n ): Observable<T> {\n console.log('[MockedApiService] POST:', url, data, options);\n return of(this.getMockResponse<T>(url, 'POST', data) as T).pipe(\n delay(this.MOCK_DELAY)\n );\n }\n\n put<T>(\n url: string,\n data: object,\n options = {},\n errorCallback?: (error: any) => Observable<never>\n ): Observable<T> {\n console.log('[MockedApiService] PUT:', url, data, options);\n return of(this.getMockResponse<T>(url, 'PUT', data) as T).pipe(\n delay(this.MOCK_DELAY)\n );\n }\n\n patch<T>(\n url: string,\n data: object,\n options = {},\n errorCallback?: (error: any) => Observable<never>\n ): Observable<T> {\n console.log('[MockedApiService] PATCH:', url, data, options);\n return of(this.getMockResponse<T>(url, 'PATCH', data) as T).pipe(\n delay(this.MOCK_DELAY)\n );\n }\n\n delete(\n url: string,\n errorCallback?: (error: any) => Observable<never>\n ): Observable<object> {\n console.log('[MockedApiService] DELETE:', url);\n return of({}).pipe(delay(this.MOCK_DELAY));\n }\n\n /**\n * Returns mock responses based on the URL pattern\n */\n private getMockResponse<T>(url: string, method: string, data?: object): T | object {\n // CodeRunner API - Run Tests\n if (url.includes('/api/attempts/public/')) {\n return this.getMockCoderunnerAttemptResponse(data);\n }\n\n if (url.includes('/api/attempts/preview/')) {\n return this.getMockCoderunnerAttemptResponse(data);\n }\n\n if (url.includes('/api/attempts/')) {\n return this.getMockCoderunnerAttemptResponse(data);\n }\n\n // Code Events\n if (url.includes('/api/code-events/')) {\n return {\n id: Math.floor(Math.random() * 10000),\n created_at: new Date().toISOString(),\n };\n }\n\n // Programming Languages\n if (url.includes('programming-languages')) {\n return []; // Mock all languages\n }\n\n // Default response\n console.warn(`[MockedApiService] No mock defined for ${method} ${url}`);\n return { success: true, data: null };\n }\n\n /**\n * Returns a mock coderunner attempt response with test results\n */\n private getMockCoderunnerAttemptResponse(data?: object): object {\n const requestData = data as any;\n const testcases = requestData?.testcases || [];\n\n // Generate mock results for each test case\n const results = testcases.map((testcase: any, index: number) => {\n // Make first test pass, others random for variety\n const passed = index === 0 ? true : Math.random() > 0.3;\n\n return {\n name: testcase.name || `Test Case ${index + 1}`,\n passed,\n expected: testcase.solution || testcase.expected_output || 'Expected output',\n actual: passed\n ? testcase.solution || testcase.expected_output || 'Expected output'\n : 'Different output',\n input: testcase.input || '',\n error: passed ? null : 'AssertionError: Output does not match expected',\n execution_time: Math.random() * 100,\n memory_used: Math.floor(Math.random() * 1000000),\n points: passed ? (testcase.points || 10) : 0,\n };\n });\n\n const totalPoints = results.reduce((sum: number, r: any) => sum + r.points, 0);\n const maxPoints = testcases.reduce(\n (sum: number, tc: any) => sum + (tc.points || 10),\n 0\n );\n\n return {\n id: Math.floor(Math.random() * 100000),\n uuid: crypto.randomUUID(),\n created_at: new Date().toISOString(),\n language: requestData?.language || 'python-3.10.0',\n code: requestData?.code || '',\n status: 'completed',\n results,\n score: maxPoints > 0 ? (totalPoints / maxPoints) * 100 : 0,\n total_points: totalPoints,\n max_points: maxPoints,\n execution_time: results.reduce((sum: number, r: any) => sum + r.execution_time, 0),\n compilation_error: null,\n runtime_error: null,\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class EnvironmentService {\n get isMobile(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as mixpanel from 'mixpanel-browser';\nimport '../../models/window';\n\n@Injectable()\nexport class MixpanelService {\n private mixpanel: typeof window.mixpanel | null = null;\n\n track(eventName: string, properties: mixpanel.Dict = {}): void {\n if (this.mixpanel) {\n return this.sendTrackEvent(eventName, properties);\n }\n\n if (window.mixpanel) {\n this.mixpanel = window.mixpanel;\n return this.sendTrackEvent(eventName, properties);\n }\n\n console.error('Mixpanel is not initialized or not available');\n }\n\n private sendTrackEvent(eventName: string, properties: mixpanel.Dict = {}): void {\n try {\n this.mixpanel!.track(eventName, properties);\n } catch (error) {\n console.error(error);\n }\n }\n}\n","import { Assessment } from '../lib/models/assessment';\nimport { Question } from '../lib/models/question';\nimport { TestResultRead } from '../lib/models/test-result';\n\nexport const mockAssessment: Assessment = {\n uuid: 'fa67cd96-2a4c-490a-9a44-b11f759f228a',\n locale: 'en',\n is_snapshots_enabled: true,\n has_video_question: false,\n allow_non_native_speakers: true,\n allow_other_conditions: true,\n general_settings: {\n id: 2157,\n owner_profile_id: 271652,\n company_name: 'x',\n company_color: '#46a997',\n company_logo: '',\n company_redirect_url: null,\n has_requested_demographic_details: true,\n has_requested_feedback: true,\n original_modified: '2024-01-16T20:30:04.054308Z',\n },\n sharing_results: true,\n};\n\nexport const mockQuestion: Question = {\n id: 747282,\n text: '<p>Charlie was a flight attendant _______ seven years.</p>',\n type: 'code',\n context: {\n intro_text: null,\n answers: [\n {\n id: 578594,\n text: '<p>during</p>',\n answer_uuid: 'cf98b452-2704-44fa-adce-d5d93ad7c643',\n },\n {\n id: 578596,\n text: '<p>through</p>',\n answer_uuid: '8e848dc4-a0cf-4c8d-b8d0-42b0fc85b19f',\n },\n {\n id: 578595,\n text: '<p>after</p>',\n answer_uuid: '1e97f320-7d22-4dec-8555-1aa8228df131',\n },\n {\n id: 578593,\n text: '<p>for</p>',\n answer_uuid: 'ccc648cc-435b-460a-89e8-432d13574e1e',\n },\n ],\n initial_code: null,\n code_language: null,\n typing_test_type: null,\n typing_test_config: null,\n typing_test_mode: {\n numbers: false,\n punctuation: false,\n funbox: 'none',\n sentences: false,\n },\n long_answer_list: false,\n max_items: 100,\n min_items: 0,\n duration: null,\n attempts: 0,\n },\n} as unknown as Question;\n\nexport const mockTestResultRead: TestResultRead = {\n id: 123,\n test: {\n id: 1,\n name: 'test-name',\n duration: 100,\n algorithm: 'testAlgorithm',\n },\n locale: 'en-EN',\n order: 1,\n is_preview_mode: true,\n};\n\nexport const mockSQLTestCases = [\n {\n category: 'Test Category 1',\n id: 1,\n initial_sql: 'Test Initial SQL',\n name: 'Test Name 1',\n post_sql: 'Test Post SQL 1',\n pre_sql: 'Test Pre SQL 1',\n result: 'Test Result 1',\n },\n {\n category: 'Test Category 2',\n id: 2,\n initial_sql: 'Test Initial SQL',\n name: 'Test Name 2',\n post_sql: 'Test Post SQL 2',\n pre_sql: 'Test Pre SQL 2',\n result: 'Test Result 2',\n },\n];\n\nexport const mockTestCases = [\n {\n name: 'Test Case 1',\n input: 'Test Input 1',\n solution: 'Test Solution 1',\n points: 10,\n },\n {\n name: 'Test Case 2',\n input: 'Test Input 2',\n solution: 'Test Solution 2',\n points: 20,\n },\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\ndeclare const jest: any;\n\n// Mock modules\nexport const ButtonComponentModule = NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})(class {});\n\nexport const IconComponentModule = NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})(class {});\n\nexport const CardComponentModule = NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})(class {});\n\nexport const DialogComponentModule = NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})(class {});\n\n// Mock DialogService\nexport class DialogService {\n open = jest.fn();\n}\n\n// Mock SnackbarService\nexport class SnackbarService {\n error = jest.fn();\n}\n\n// Export all other potential exports as empty objects\nexport const QuillViewComponent = class {};\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;MAqBa,uBAAuB,CAAA;IACzB,MAAM,GAAG,CAAC;IACV,QAAQ,GAAG,KAAK;IAEjB,kBAAkB,GAAG,KAAK;IAC1B,gBAAgB,GAAkB,IAAI;AACtC,IAAA,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;AAE/C,IAAA,YAAY,GAA2B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAE1E,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,cAAc,EAAE;;IAGvB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE5D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,cAAc,EAAE;;aAChB;YACL,IAAI,CAAC,aAAa,EAAE;;;AAIhB,IAAA,mBAAmB,CAAC,cAAsB,EAAA;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,EAAE,CAAC;;IAGjC,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B;;AAGF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAE9B,QAAA,MAAM,OAAO,GAAG,CAAC,SAAiB,KAAI;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC5B;;YAGF,IAAI,SAAS,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,EAAE;AAC9C,gBAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;gBAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG;AAE3C,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;;AAGlC,YAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACxD,SAAC;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC;;IAGhD,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAE/B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC3C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;;AAIxB,IAAA,aAAa,CAAC,MAAc,EAAA;QAKlC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,GAAG,IAAI,EAAE;YACnC,OAAO;AACL,gBAAA,WAAW,EAAE,CAAK,GAAA,CAAA;AAClB,gBAAA,YAAY,EAAE,CAAK,GAAA,CAAA;AACnB,gBAAA,WAAW,EAAE,CAAK,GAAA,CAAA;aACnB;;AAGH,QAAA,IAAI,KAAmC;AAEvC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;aAClC;AACL,YAAA,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;AAGzC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAE/D,OAAO;YACL,WAAW,EAAE,CAAG,EAAA,YAAY,CAAG,CAAA,CAAA;AAC/B,YAAA,YAAY,EAAE,CAAA,EAAG,YAAY,GAAG,EAAE,CAAG,CAAA,CAAA;YACrC,WAAW,EAAE,CAAG,EAAA,YAAY,CAAG,CAAA,CAAA;SAChC;;AAGK,IAAA,kBAAkB,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,MAAM,GAAG,IAAI,EAAE;YACjB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;;AACtB,aAAA,IAAI,MAAM,GAAG,IAAI,EAAE;YACxB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;;aACvB;YACL,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;;;AAIzB,IAAA,kBAAkB,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,MAAM,GAAG,IAAI,EAAE;YACjB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;;AACtB,aAAA,IAAI,MAAM,GAAG,GAAG,EAAE;YACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;;AACxB,aAAA,IAAI,MAAM,GAAG,IAAI,EAAE;YACxB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;;aACxB;YACL,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;;;IAIzB,eAAe,CAAC,GAAW,EAAE,GAAW,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;;IAG1D,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE;;wGAzHX,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBpC,6eAiBA,EAAA,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAEb,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,6eAAA,EAAA,MAAA,EAAA,CAAA,6eAAA,CAAA,EAAA;wDAGhB,MAAM,EAAA,CAAA;sBAAd;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;MEKU,mBAAmB,CAAA;IACf,KAAK,GAAG,iBAAiB;IAC/B,QAAQ,GAAG,EAAE;IACb,SAAS,GAAG,KAAK;AACjB,IAAA,OAAO,GAAY;AAC1B,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,KAAK;KACjB;AACS,IAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AACrC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAEjD,IAAA,WAAW;AAEH,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAElC,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;;AAGnC,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE;;IAGhC,MAAM,WAAW,CAAC,aAA4B,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;AAEjL,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC/B,GAAG,EAAE,IAAI,CAAC,QAAe;AACzB,oBAAA,UAAU,EAAE,CAAC;AACd,iBAAA,CAAC,CAAC,IAAI,CAAC,MAAI;oBACV,KAAK,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;oBACxC,UAAU,CAAC,MAAK;AACd,wBAAA,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;qBAC9B,EAAE,GAAG,CAAC;AACT,iBAAC,CAAC;;AAGJ,YAAA,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE;AAC9B,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;qBACxB;AACL,oBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;;;;;AAM9B,IAAA,MAAM,iBAAiB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;;;AAI5B,IAAA,MAAM,oBAAoB,GAAA;AAChC,QAAA,MAAM,OAAO,GAAY;YACvB,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,EAAE,IAAI,CAAC,QAAoB;SAC/B;AACD,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAA4B,EAAE,OAAO,CAAC;YAC/E,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AAChC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3B,aAAC,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;AAClC,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,aAAC,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;gBACrC,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE;AACvC,oBAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;;AAE5B,aAAC,CAAC;AACF,YAAA,MAAM,IAAI,CAAC,SAAS,EAAE;;QACtB,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC9B,YAAA,MAAM,KAAK;;;AAIP,IAAA,MAAM,SAAS,GAAA;QACrB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;AACtC,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;;wGA1FtB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,oSALpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EACjB,EAAE,EAEK,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA;8BAGtB,KAAK,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAUS,UAAU,EAAA,CAAA;sBAAnB;gBACS,YAAY,EAAA,CAAA;sBAArB;;;AC3CI,MAAM,uBAAuB,GAAG;;MCO1B,YAAY,CAAA;IACf,aAAa,GAAyB,IAAI;AAC1C,IAAA,oBAAoB;AACnB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IAEpC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE;;AAG5B,IAAA,cAAc,CAAC,IAGd,EAAA;AACC,QAAA,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,CACxC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CACrC;;IAGH,WAAW,GAAA;AAGT,QAAA,IAAI,sBAA+C;AACnD,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AACnD,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAI;gBACf,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;AAC9C,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,MAAM,WAAW,GAAW,EAAE;gBAC9B,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;AAC7C,oBAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9B,iBAAC;gBAED,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAC/C,oBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;AACtC,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAC;AACF,oBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACpD,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC3B,QAAQ,CAAC,QAAQ,EAAE;AACrB,iBAAC,CAAC;gBAEF,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AACrC,oBAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;oBACrB,QAAQ,CAAC,QAAQ,EAAE;AACrB,iBAAC;AAED,gBAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE;gBACvC,MAAM,0BAA0B,GAC9B,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC;AAC9C,gBAAA,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,EAAE;AAClD,gBAAA,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC;gBAEhD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC;gBACtD,MAAM,OAAO,GAAG,MAAK;AACnB,oBAAA,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC;oBAC5C,IAAI,UAAU,GAAG,GAAG;AACpB,oBAAA,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE;AAC/B,wBAAA,UAAU,IAAI,SAAS,GAAG,SAAS;;AAErC,oBAAA,IAAI,UAAU,GAAG,CAAC,EAAE;wBAClB,QAAQ,CAAC,IAAI,CAAC;AACZ,4BAAA,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;AAC9C,yBAAA,CAAC;;yBACG;wBACL,IAAI,CAAC,sBAAsB,EAAE;AAC3B,4BAAA,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC;AAC5C,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,KAAK,EAAE,IAAI;AACZ,6BAAA,CAAC;4BAEF;AACG,iCAAA,IAAI,CAAC,CAAC,aAAa,KAAI;gCACtB,IAAI,CAAC,aAAa,EAAE;oCAClB,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;oCAC9C,QAAQ,CAAC,QAAQ,EAAE;;AAEvB,6BAAC;iCACA,OAAO,CAAC,MAAK;gCACZ,sBAAsB,GAAG,IAAI;AAC/B,6BAAC,CAAC;;;AAIR,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,wBAAA,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAEzC,iBAAC;AACD,gBAAA,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACvC,aAAC;AACA,iBAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,gBAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE;AACrB,aAAC,CAAC;AACN,SAAC,CAAC;;IAGJ,MAAM,SAAS,CAAC,GAAW,EAAA;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AAC5B,QAAA,MAAM,KAAK,CAAC,IAAI,EAAE;QAClB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,KAAK,CAAC,OAAO,GAAG,MAAK;AACnB,gBAAA,OAAO,EAAE;AACX,aAAC;AACD,YAAA,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;AAC1C,SAAC,CAAC;;AAGJ,IAAA,uBAAuB,CAAC,IAA2B,EAAA;AACjD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;;IAGlC,MAAM,eAAe,CAAC,IAGrB,EAAA;AACC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC/B,YAAA,OAAO,IAAI;;QACX,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAClB,YAAA,OAAO,KAAK;;;AAIR,IAAA,yBAAyB,CAAC,IAGjC,EAAA;AACC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa;AAC9D,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa;QAC9D,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,KAAK,IAAI;kBACV,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;kBACpC,IAAI,CAAC,KAAK;AAChB,YAAA,KAAK,EACH,IAAI,CAAC,KAAK,IAAI;kBACV,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;kBACpC,IAAI,CAAC,KAAK;SACjB;;wGA7IQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACJD,IAAK,UAEJ;AAFD,CAAA,UAAK,UAAU,EAAA;AACb,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,oBAAoC;AACtC,CAAC,EAFI,UAAU,KAAV,UAAU,GAEd,EAAA,CAAA,CAAA;MAGY,YAAY,CAAA;IACN,gBAAgB,GAAG,SAAS;IAE7C,eAAe,GAAA;QACb,QACE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC;YAClD,IAAI,CAAC,gBAAgB;;AAIjB,IAAA,mBAAmB,CAAC,YAAoB,EAAA;AAC9C,QAAA,OAAO,gBAAgB,CAAC,QAAQ,CAAC,eAAe;aAC7C,gBAAgB,CAAC,YAAY;AAC7B,aAAA,IAAI,EAAE;;wGAbA,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAZ,YAAY,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;ACCD;;;;;AAKG;MACU,wBAAwB,CAAA;AAC3B,IAAA,OAAO,kBAAkB,CAC/B,SAAwB,EACxB,QAAsC,EAAA;QAEtC,MAAM,qBAAqB,GAA0B,EAAE;AAEvD,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YAC7B,qBAAqB,CAAC,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;AAC5D,SAAC,CAAC;AAEF,QAAA,OAAO,qBAAqB;;IAGvB,OAAO,gBAAgB,CAC5B,KAAa,EACb,SAAwB,EACxB,KAAa,EACb,QAAsC,EAAA;QAEtC,OAAO;AACL,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,QAAQ,EAAE;gBACR,KAAK;gBACL,KAAK;gBACL,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC;AACrD,aAAA;SACF;;AAEJ;;AC1CD;IACY;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAiB;AACnB,CAAC,EAbW,QAAQ,KAAR,QAAQ,GAanB,EAAA,CAAA,CAAA;AAED;AACO,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ;;ACZtD,MAAM,kBAAkB,GAAG,CAAC,OAAA,GAAmC,EAAE,KACtE,sBAAsB,CAAC,OAAO,CAAC;AAC7B,IAAA,eAAe,EAAE;AACf,QAAA,oBAAoB,EAAE,KAAK;QAC3B,cAAc,EAAE,CAAC,IAAI,CAAC;AACtB,QAAA,WAAW,EAAE,IAAI;AAClB,KAAA;AACD,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,GAAG,OAAO;AACX,CAAA;;MCNU,UAAU,CAAA;AAOX,IAAA,UAAA;AACA,IAAA,eAAA;IAPF,cAAc,GAAG,EAAE;IACnB,eAAe,GAAG,EAAE;IACpB,uBAAuB,GAAG,EAAE;IAC5B,OAAO,GAAG,EAAE;IAEpB,WACU,CAAA,UAAsB,EACtB,eAAgC,EAAA;QADhC,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAe,CAAA,eAAA,GAAf,eAAe;;AAGzB,IAAA,SAAS,CACP,cAAsB,EACtB,eAAuB,EACvB,gBAAwB,EACxB,OAAe,EAAA;AAEf,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe;AACtC,QAAA,IAAI,CAAC,uBAAuB,GAAG,gBAAgB;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;IAGxB,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;AAG5B,IAAA,GAAG,CACD,GAAW,EACX,OAAO,GAAG,EAAE,EACZ,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;QAE3C,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,EAAG,IAAI,CAAC,OAAO,CAAG,EAAA,GAAG,CAAE,CAAA,EACvB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAE3B,aAAA,IAAI,CAAC,UAAU,CAAC,CAAC,KAAwB,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAkB;;IAG1F,IAAI,CACF,GAAW,EACX,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3C,eAAe,GAAG,KAAK,EAAA;QAEvB,OAAO,IAAI,CAAC;aACT,IAAI,CACH,eAAe,GAAG,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAG,EAAA,GAAG,CAAE,CAAA,EAC/C,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAE3B,aAAA,IAAI,CAAC,UAAU,CAAC,CAAC,KAAwB,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAkB;;AAG1F,IAAA,GAAG,CACD,GAAW,EACX,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;QAE3C,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA,CAAE,EACvB,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAE3B,aAAA,IAAI,CAAC,UAAU,CAAC,CAAC,KAAwB,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAkB;;AAG1F,IAAA,KAAK,CACH,GAAW,EACX,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;QAE3C,OAAO,IAAI,CAAC;AACT,aAAA,KAAK,CACJ,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA,CAAE,EACvB,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAE3B,aAAA,IAAI,CAAC,UAAU,CAAC,CAAC,KAAwB,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAkB;;AAG1F,IAAA,MAAM,CACJ,GAAW,EACX,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;QAE3C,OAAO,IAAI,CAAC;AACT,aAAA,MAAM,CACL,CAAA,EAAG,IAAI,CAAC,OAAO,CAAG,EAAA,GAAG,CAAE,CAAA,EACvB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AAEtB,aAAA,IAAI,CAAC,UAAU,CAAC,CAAC,KAAwB,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAuB;;AAGvF,IAAA,WAAW,CAAC,QAA2B,EAAA;AAC7C,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ;QAC1B,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;;aAChC;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAE5D,YAAA,OAAO,KAAK;;;IAIR,yBAAyB,GAAA;QAC/B,OAAO,SAAS,CAAC,CAAG,EAAA,IAAI,CAAC,uBAAuB,CAAA,oBAAA,CAAsB,CAAC;;AAGjE,IAAA,YAAY,CAAC,OAAe,EAAA;QAClC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAClD,YAAA,OAAO,GAAG;AACR,gBAAA,GAAG,OAAO;AACV,gBAAA,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;gBAC1C,mBAAmB,EAAE,IAAI,CAAC,cAAc;aACzC;;AAGH,QAAA,MAAM,yBAAyB,GAAI,OAAkC,CACnE,eAAe,CAChB;AACD,QAAA,MAAM,OAAO,GAA8C;AACzD,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,OAAO;AACV,gBAAA,aAAa,EAAE;AACb,sBAAE;AACF,sBAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,CAAA;AACjE,aAAA;SACF;AAED,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,eAAe;;AAG3D,QAAA,OAAO,OAAO;;wGA3IL,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAV,UAAU,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;ACJD;;;;;;;;;AASG;MAEU,gBAAgB,CAAA;IACnB,cAAc,GAAG,iBAAiB;IAClC,eAAe,GAAG,IAAI;IACtB,uBAAuB,GAAG,EAAE;;IAGnB,UAAU,GAAG,GAAG;AAEjC,IAAA,SAAS,CACP,cAAsB,EACtB,eAAuB,EACvB,gBAAwB,EACxB,OAAe,EAAA;AAEf,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe;AACtC,QAAA,IAAI,CAAC,uBAAuB,GAAG,gBAAgB;AAC/C,QAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE;YAC5C,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,OAAO;AACR,SAAA,CAAC;;IAGJ,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;AAG5B,IAAA,GAAG,CACD,GAAW,EACX,OAAO,GAAG,EAAE,EACZ,aAAiD,EAAA;QAEjD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,GAAG,EAAE,OAAO,CAAC;QACpD,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,CAAI,GAAG,EAAE,KAAK,CAAM,CAAC,CAAC,IAAI,CACtD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CACvB;;AAGH,IAAA,IAAI,CACF,GAAW,EACX,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,aAAiD,EACjD,eAAe,GAAG,KAAK,EAAA;QAEvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;QAC3D,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,CAAI,GAAG,EAAE,MAAM,EAAE,IAAI,CAAM,CAAC,CAAC,IAAI,CAC7D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CACvB;;IAGH,GAAG,CACD,GAAW,EACX,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,aAAiD,EAAA;QAEjD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;QAC1D,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,CAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAM,CAAC,CAAC,IAAI,CAC5D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CACvB;;IAGH,KAAK,CACH,GAAW,EACX,IAAY,EACZ,OAAO,GAAG,EAAE,EACZ,aAAiD,EAAA;QAEjD,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;QAC5D,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,CAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAM,CAAC,CAAC,IAAI,CAC9D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CACvB;;IAGH,MAAM,CACJ,GAAW,EACX,aAAiD,EAAA;AAEjD,QAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC;AAC9C,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAG5C;;AAEG;AACK,IAAA,eAAe,CAAI,GAAW,EAAE,MAAc,EAAE,IAAa,EAAA;;AAEnE,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC;;AAGpD,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC;;AAGpD,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC;;;AAIpD,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;YACrC,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;AACrC,gBAAA,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;;;AAIH,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;YACzC,OAAO,EAAE,CAAC;;;QAIZ,OAAO,CAAC,IAAI,CAAC,CAAA,uCAAA,EAA0C,MAAM,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,CAAC;QACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;AAGtC;;AAEG;AACK,IAAA,gCAAgC,CAAC,IAAa,EAAA;QACpD,MAAM,WAAW,GAAG,IAAW;AAC/B,QAAA,MAAM,SAAS,GAAG,WAAW,EAAE,SAAS,IAAI,EAAE;;QAG9C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,KAAa,KAAI;;AAE7D,YAAA,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;YAEvD,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAa,UAAA,EAAA,KAAK,GAAG,CAAC,CAAE,CAAA;gBAC/C,MAAM;gBACN,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,IAAI,iBAAiB;AAC5E,gBAAA,MAAM,EAAE;sBACJ,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,IAAI;AACnD,sBAAE,kBAAkB;AACtB,gBAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,gDAAgD;AACvE,gBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;gBACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;AAChD,gBAAA,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC;aAC7C;AACH,SAAC,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAM,KAAK,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAChC,CAAC,GAAW,EAAE,EAAO,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,EACjD,CAAC,CACF;QAED,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC;AACtC,YAAA,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE;AACzB,YAAA,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,YAAA,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,eAAe;AAClD,YAAA,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE;AAC7B,YAAA,MAAM,EAAE,WAAW;YACnB,OAAO;AACP,YAAA,KAAK,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,IAAI,GAAG,GAAG,CAAC;AAC1D,YAAA,YAAY,EAAE,WAAW;AACzB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAM,KAAK,GAAG,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;AAClF,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,aAAa,EAAE,IAAI;SACpB;;wGAvKQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAhB,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCVY,kBAAkB,CAAA;AAC7B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,gEAAgE,CAAC,IAAI,CAC1E,SAAS,CAAC,SAAS,CACpB;;wGAJQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAlB,kBAAkB,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCGY,eAAe,CAAA;IAClB,QAAQ,GAAkC,IAAI;AAEtD,IAAA,KAAK,CAAC,SAAiB,EAAE,UAAA,GAA4B,EAAE,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC;;AAGnD,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC;;AAGnD,QAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC;;AAGvD,IAAA,cAAc,CAAC,SAAiB,EAAE,UAAA,GAA4B,EAAE,EAAA;AACtE,QAAA,IAAI;YACF,IAAI,CAAC,QAAS,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;;QAC3C,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;;;wGApBb,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAf,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACAY,MAAA,cAAc,GAAe;AACxC,IAAA,IAAI,EAAE,sCAAsC;AAC5C,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,oBAAoB,EAAE,IAAI;AAC1B,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,yBAAyB,EAAE,IAAI;AAC/B,IAAA,sBAAsB,EAAE,IAAI;AAC5B,IAAA,gBAAgB,EAAE;AAChB,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,gBAAgB,EAAE,MAAM;AACxB,QAAA,YAAY,EAAE,GAAG;AACjB,QAAA,aAAa,EAAE,SAAS;AACxB,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,oBAAoB,EAAE,IAAI;AAC1B,QAAA,iCAAiC,EAAE,IAAI;AACvC,QAAA,sBAAsB,EAAE,IAAI;AAC5B,QAAA,iBAAiB,EAAE,6BAA6B;AACjD,KAAA;AACD,IAAA,eAAe,EAAE,IAAI;;AAGV,MAAA,YAAY,GAAa;AACpC,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,IAAI,EAAE,4DAA4D;AAClE,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE;AACP,YAAA;AACE,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,WAAW,EAAE,sCAAsC;AACpD,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,WAAW,EAAE,sCAAsC;AACpD,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,WAAW,EAAE,sCAAsC;AACpD,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,WAAW,EAAE,sCAAsC;AACpD,aAAA;AACF,SAAA;AACD,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,gBAAgB,EAAE,IAAI;AACtB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,gBAAgB,EAAE;AAChB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA;AACD,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,CAAC;AACZ,KAAA;;AAGU,MAAA,kBAAkB,GAAmB;AAChD,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,IAAI,EAAE;AACJ,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,SAAS,EAAE,eAAe;AAC3B,KAAA;AACD,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,eAAe,EAAE,IAAI;;AAGV,MAAA,gBAAgB,GAAG;AAC9B,IAAA;AACE,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,MAAM,EAAE,eAAe;AACxB,KAAA;AACD,IAAA;AACE,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,MAAM,EAAE,eAAe;AACxB,KAAA;;AAGU,MAAA,aAAa,GAAG;AAC3B,IAAA;AACE,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,MAAM,EAAE,EAAE;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,MAAM,EAAE,EAAE;AACX,KAAA;;;AChHH;AACO,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC5C,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,OAAO,EAAE,EAAE;AACZ,CAAA,CAAC,CAAC,MAAA;AAAQ,CAAA;AAEJ,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,OAAO,EAAE,EAAE;AACZ,CAAA,CAAC,CAAC,MAAA;AAAQ,CAAA;AAEJ,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,OAAO,EAAE,EAAE;AACZ,CAAA,CAAC,CAAC,MAAA;AAAQ,CAAA;AAEJ,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC5C,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,OAAO,EAAE,EAAE;AACZ,CAAA,CAAC,CAAC,MAAA;AAAQ,CAAA;AAEX;MACa,aAAa,CAAA;AACxB,IAAA,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE;AACjB;AAED;MACa,eAAe,CAAA;AAC1B,IAAA,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE;AAClB;AAED;AACa,MAAA,kBAAkB,GAAG,MAAA;;;ACzClC;;AAEG;;;;"}
|
|
@@ -4,7 +4,7 @@ import { Question } from './question';
|
|
|
4
4
|
import { TestResultRead } from './test-result';
|
|
5
5
|
import { Environment } from './environment';
|
|
6
6
|
import { Assessment } from './assessment';
|
|
7
|
-
import { ApplicationTheme } from '@testgorilla/tgo-ui';
|
|
7
|
+
import { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';
|
|
8
8
|
export interface INavigationButtonState {
|
|
9
9
|
disabled: boolean;
|
|
10
10
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { SnackbarService } from '@testgorilla/tgo-ui';
|
|
2
|
+
import { SnackbarService } from '@testgorilla/tgo-ui/components/snackbar';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class ApiService {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testgorilla/tgo-shared-lib",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">= 19.0.0 < 20.0.0",
|
|
6
6
|
"@angular/core": ">= 19.0.0 < 20.0.0",
|
|
@@ -8,11 +8,15 @@
|
|
|
8
8
|
"mixpanel-browser": ">= 2.0.0 < 3.0.0",
|
|
9
9
|
"@vimeo/player": ">= 2.0.0 < 3.0.0",
|
|
10
10
|
"@ngneat/transloco": ">= 4.0.0 < 5.0.0",
|
|
11
|
-
"@testgorilla/tgo-ui": ">=
|
|
11
|
+
"@testgorilla/tgo-ui": ">= 6.0.0 < 7.0.0"
|
|
12
12
|
},
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"private": false,
|
|
15
15
|
"license": "PROPRIETARY",
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public",
|
|
18
|
+
"registry": "https://registry.npmjs.org/"
|
|
19
|
+
},
|
|
16
20
|
"displayName": "Shared library",
|
|
17
21
|
"description": "Shared library",
|
|
18
22
|
"module": "fesm2022/testgorilla-tgo-shared-lib.mjs",
|