@testgorilla/tgo-shared-lib 2.0.1 → 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.
|
@@ -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(
|
|
151
|
-
|
|
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 {\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'] && this.videoUrl) {\r\n await this.vimeoPlayer.loadVideo(this.videoUrl);\r\n await this.playVideo();\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 {\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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"}
|