@testgorilla/tgo-shared-lib 2.0.0 → 2.0.2

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
+ ```
@@ -109,11 +109,11 @@ class AudioAnimationComponent {
109
109
  this.stopAnimation();
110
110
  }
111
111
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AudioAnimationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", 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 });
112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: AudioAnimationComponent, isStandalone: true, selector: "tgo-audio-animation", inputs: { volume: "volume", fakeData: "fakeData" }, usesOnChanges: true, ngImport: i0, template: "<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", 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
113
  }
114
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AudioAnimationComponent, decorators: [{
115
115
  type: Component,
116
- 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"] }]
116
+ args: [{ selector: 'tgo-audio-animation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule], template: "<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", 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
117
  }], ctorParameters: () => [], propDecorators: { volume: [{
118
118
  type: Input
119
119
  }], fakeData: [{
@@ -146,9 +146,16 @@ class VimeoVideoComponent {
146
146
  }
147
147
  async ngOnChanges(simpleChanges) {
148
148
  if (this.vimeoPlayer) {
149
- if (simpleChanges['videoUrl'] && this.videoUrl) {
150
- await this.vimeoPlayer.loadVideo(this.videoUrl);
151
- await this.playVideo();
149
+ if (simpleChanges['videoUrl'] && !simpleChanges['videoUrl'].isFirstChange() && simpleChanges['videoUrl'].currentValue != simpleChanges['videoUrl'].previousValue && this.videoUrl) {
150
+ await this.vimeoPlayer.loadVideo({
151
+ url: this.videoUrl,
152
+ start_time: 0,
153
+ }).then(() => {
154
+ void this.vimeoPlayer?.setCurrentTime(0);
155
+ setTimeout(() => {
156
+ void this.vimeoPlayer?.play();
157
+ }, 200);
158
+ });
152
159
  }
153
160
  if (simpleChanges['isPlaying']) {
154
161
  if (this.isPlaying) {
@@ -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 {\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 this.fakeData\n ? (range = this.getFakeVolumeRange(volume))\n : (range = this.getRealVolumeRange(volume));\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'] && this.videoUrl) {\n await this.vimeoPlayer.loadVideo(this.videoUrl);\n await this.playVideo();\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';\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":"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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 {\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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"}
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@testgorilla/tgo-shared-lib",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "peerDependencies": {
5
- "@angular/common": "~19.2.17",
6
- "@angular/core": "~19.2.17",
7
- "jest-preset-angular": "14.4.2",
8
- "rxjs": "~7.8.1"
5
+ "@angular/common": ">= 19.0.0 < 20.0.0",
6
+ "@angular/core": ">= 19.0.0 < 20.0.0",
7
+ "rxjs": ">= 7.0.0 < 8.0.0",
8
+ "mixpanel-browser": ">= 2.0.0 < 3.0.0",
9
+ "@vimeo/player": ">= 2.0.0 < 3.0.0",
10
+ "@ngneat/transloco": ">= 4.0.0 < 5.0.0",
11
+ "@testgorilla/tgo-ui": ">= 4.0.0 < 5.0.0"
9
12
  },
10
13
  "sideEffects": false,
11
14
  "private": false,