@testgorilla/tgo-immersive-test 2.0.2 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -9,10 +9,16 @@ import * as i1$1 from '@angular/material/dialog';
|
|
|
9
9
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
10
10
|
import * as i3 from '@ngneat/transloco';
|
|
11
11
|
import { TranslocoService, TRANSLOCO_SCOPE, TranslocoModule } from '@ngneat/transloco';
|
|
12
|
-
import * as
|
|
13
|
-
import {
|
|
12
|
+
import * as i5 from '@testgorilla/tgo-ui/components/card';
|
|
13
|
+
import { CardComponentModule } from '@testgorilla/tgo-ui/components/card';
|
|
14
|
+
import * as i4 from '@testgorilla/tgo-ui/components/dialog';
|
|
15
|
+
import { DialogComponentModule, DialogService } from '@testgorilla/tgo-ui/components/dialog';
|
|
14
16
|
import { QuillViewComponent } from 'ngx-quill';
|
|
15
17
|
import { firstValueFrom, Subject, takeUntil, catchError } from 'rxjs';
|
|
18
|
+
import * as i1$2 from '@testgorilla/tgo-ui/components/button';
|
|
19
|
+
import { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';
|
|
20
|
+
import * as i2 from '@testgorilla/tgo-ui/components/icon';
|
|
21
|
+
import { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';
|
|
16
22
|
|
|
17
23
|
class VideoCountdownComponent {
|
|
18
24
|
cdr;
|
|
@@ -72,8 +78,8 @@ class VideoCountdownComponent {
|
|
|
72
78
|
};
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
76
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: VideoCountdownComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: VideoCountdownComponent, isStandalone: true, selector: "tgo-video-countdown", inputs: { startFrom: "startFrom", endAt: "endAt", interval: "interval" }, outputs: { finished: "finished" }, ngImport: i0, template: "<div class=\"video-countdown\">\n <div\n class=\"video-countdown-element\"\n *ngFor=\"let num of [displayNum]\"\n @zoomInOut\n >\n {{ num.value }}\n </div>\n</div>\n\n", styles: [".video-countdown{display:flex;justify-content:center}.video-countdown-element{position:absolute;font-size:80px;font-weight:700;line-height:1;-webkit-user-select:none;user-select:none;opacity:1;backface-visibility:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
|
|
77
83
|
trigger('zoomInOut', [
|
|
78
84
|
transition(':enter', [
|
|
79
85
|
style({ transform: 'scale(0)', opacity: 0 }),
|
|
@@ -88,7 +94,7 @@ class VideoCountdownComponent {
|
|
|
88
94
|
]),
|
|
89
95
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
90
96
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: VideoCountdownComponent, decorators: [{
|
|
92
98
|
type: Component,
|
|
93
99
|
args: [{ selector: 'tgo-video-countdown', animations: [
|
|
94
100
|
trigger('zoomInOut', [
|
|
@@ -144,10 +150,10 @@ class RingingPhoneAnimationComponent {
|
|
|
144
150
|
this.audio.volume = 0.15;
|
|
145
151
|
void this.audio.play();
|
|
146
152
|
}
|
|
147
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
148
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: RingingPhoneAnimationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
154
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: RingingPhoneAnimationComponent, isStandalone: true, selector: "tgo-ringing-phone-animation", inputs: { isRinging: "isRinging" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ringing-phone-animation-wrapper\">\n <section class=\"ringing-phone-animation-container\">\n <div class=\"ringing-effect\" *ngIf=\"ringingSignal()\">\n <div class=\"ringing-line first-line\"></div>\n <div class=\"ringing-line second-line\"></div>\n <div class=\"ringing-line third-line\"></div>\n </div>\n <svg width=\"76\" height=\"30\" viewBox=\"0 0 76 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.33348 28.5122L1.66681 21.0122C1.00014 20.3455 0.666809 19.5678 0.666809 18.6789C0.666809 17.79 1.00014 17.0122 1.66681 16.3455C6.5557 11.0678 12.1946 7.10943 18.5835 4.47054C24.9724 1.83165 31.4446 0.512207 38.0001 0.512207C44.5557 0.512207 51.014 1.83165 57.3751 4.47054C63.7363 7.10943 69.389 11.0678 74.3335 16.3455C75.0001 17.0122 75.3335 17.79 75.3335 18.6789C75.3335 19.5678 75.0001 20.3455 74.3335 21.0122L66.6668 28.5122C66.0557 29.1233 65.3474 29.4567 64.5418 29.5122C63.7363 29.5678 63.0001 29.3455 62.3335 28.8455L52.6668 21.5122C52.2224 21.1789 51.889 20.79 51.6668 20.3455C51.4446 19.9011 51.3335 19.4011 51.3335 18.8455V9.34554C49.2224 8.67888 47.0557 8.1511 44.8335 7.76221C42.6113 7.37332 40.3335 7.17887 38.0001 7.17887C35.6668 7.17887 33.389 7.37332 31.1668 7.76221C28.9446 8.1511 26.7779 8.67888 24.6668 9.34554V18.8455C24.6668 19.4011 24.5557 19.9011 24.3335 20.3455C24.1113 20.79 23.7779 21.1789 23.3335 21.5122L13.6668 28.8455C13.0001 29.3455 12.264 29.5678 11.4585 29.5122C10.6529 29.4567 9.94459 29.1233 9.33348 28.5122ZM18.0001 11.6789C16.389 12.5122 14.8335 13.4705 13.3335 14.5539C11.8335 15.6372 10.2779 16.8455 8.66681 18.1789L12.0001 21.5122L18.0001 16.8455V11.6789ZM58.0001 11.8455V16.8455L64.0001 21.5122L67.3335 18.3455C65.7224 16.9011 64.1668 15.6511 62.6668 14.5955C61.1668 13.54 59.6113 12.6233 58.0001 11.8455Z\"\n fill=\"white\"\n />\n </svg>\n </section>\n</div>\n\n", styles: [".ringing-phone-animation-wrapper{display:flex;justify-content:center;align-items:center}.ringing-phone-animation-wrapper .ringing-phone-animation-container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect{display:flex;gap:15px;opacity:1;animation:blink-wrapper 1.4s infinite;animation-delay:.8s}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .ringing-line{width:6px;height:16px;background-color:#fff;opacity:0}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .first-line{animation:blink-line 1.4s infinite;animation-delay:.1s;transform:rotate(-45deg)}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .second-line{animation:blink-line 1.4s infinite;animation-delay:.3s;transform:translateY(-50%)}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .third-line{animation:blink-line 1.4s infinite;animation-delay:.6s;transform:rotate(45deg)}.ringing-phone-animation-wrapper .ringing-phone-animation-container .answer-btn{margin-top:20px;padding:10px 20px;background-color:#fff;border:none;border-radius:20px;cursor:pointer;font-size:16px}@keyframes blink-line{0%,49%{opacity:0}50%,to{opacity:1}}@keyframes blink-wrapper{0%,49%{opacity:1}50%,to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
149
155
|
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: RingingPhoneAnimationComponent, decorators: [{
|
|
151
157
|
type: Component,
|
|
152
158
|
args: [{ selector: 'tgo-ringing-phone-animation', imports: [CommonModule], template: "<div class=\"ringing-phone-animation-wrapper\">\n <section class=\"ringing-phone-animation-container\">\n <div class=\"ringing-effect\" *ngIf=\"ringingSignal()\">\n <div class=\"ringing-line first-line\"></div>\n <div class=\"ringing-line second-line\"></div>\n <div class=\"ringing-line third-line\"></div>\n </div>\n <svg width=\"76\" height=\"30\" viewBox=\"0 0 76 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.33348 28.5122L1.66681 21.0122C1.00014 20.3455 0.666809 19.5678 0.666809 18.6789C0.666809 17.79 1.00014 17.0122 1.66681 16.3455C6.5557 11.0678 12.1946 7.10943 18.5835 4.47054C24.9724 1.83165 31.4446 0.512207 38.0001 0.512207C44.5557 0.512207 51.014 1.83165 57.3751 4.47054C63.7363 7.10943 69.389 11.0678 74.3335 16.3455C75.0001 17.0122 75.3335 17.79 75.3335 18.6789C75.3335 19.5678 75.0001 20.3455 74.3335 21.0122L66.6668 28.5122C66.0557 29.1233 65.3474 29.4567 64.5418 29.5122C63.7363 29.5678 63.0001 29.3455 62.3335 28.8455L52.6668 21.5122C52.2224 21.1789 51.889 20.79 51.6668 20.3455C51.4446 19.9011 51.3335 19.4011 51.3335 18.8455V9.34554C49.2224 8.67888 47.0557 8.1511 44.8335 7.76221C42.6113 7.37332 40.3335 7.17887 38.0001 7.17887C35.6668 7.17887 33.389 7.37332 31.1668 7.76221C28.9446 8.1511 26.7779 8.67888 24.6668 9.34554V18.8455C24.6668 19.4011 24.5557 19.9011 24.3335 20.3455C24.1113 20.79 23.7779 21.1789 23.3335 21.5122L13.6668 28.8455C13.0001 29.3455 12.264 29.5678 11.4585 29.5122C10.6529 29.4567 9.94459 29.1233 9.33348 28.5122ZM18.0001 11.6789C16.389 12.5122 14.8335 13.4705 13.3335 14.5539C11.8335 15.6372 10.2779 16.8455 8.66681 18.1789L12.0001 21.5122L18.0001 16.8455V11.6789ZM58.0001 11.8455V16.8455L64.0001 21.5122L67.3335 18.3455C65.7224 16.9011 64.1668 15.6511 62.6668 14.5955C61.1668 13.54 59.6113 12.6233 58.0001 11.8455Z\"\n fill=\"white\"\n />\n </svg>\n </section>\n</div>\n\n", styles: [".ringing-phone-animation-wrapper{display:flex;justify-content:center;align-items:center}.ringing-phone-animation-wrapper .ringing-phone-animation-container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect{display:flex;gap:15px;opacity:1;animation:blink-wrapper 1.4s infinite;animation-delay:.8s}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .ringing-line{width:6px;height:16px;background-color:#fff;opacity:0}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .first-line{animation:blink-line 1.4s infinite;animation-delay:.1s;transform:rotate(-45deg)}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .second-line{animation:blink-line 1.4s infinite;animation-delay:.3s;transform:translateY(-50%)}.ringing-phone-animation-wrapper .ringing-phone-animation-container .ringing-effect .third-line{animation:blink-line 1.4s infinite;animation-delay:.6s;transform:rotate(45deg)}.ringing-phone-animation-wrapper .ringing-phone-animation-container .answer-btn{margin-top:20px;padding:10px 20px;background-color:#fff;border:none;border-radius:20px;cursor:pointer;font-size:16px}@keyframes blink-line{0%,49%{opacity:0}50%,to{opacity:1}}@keyframes blink-wrapper{0%,49%{opacity:1}50%,to{opacity:0}}\n"] }]
|
|
153
159
|
}], propDecorators: { isRinging: [{
|
|
@@ -178,17 +184,17 @@ class ReviewInstructionsDialogComponent {
|
|
|
178
184
|
this.translations = await firstValueFrom(this.translocoService.selectTranslateObject(`INSTRUCTIONS_MODAL`, {}, this.translationScope));
|
|
179
185
|
this.cdr.markForCheck();
|
|
180
186
|
}
|
|
181
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
182
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
187
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ReviewInstructionsDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: TRANSLOCO_SCOPE }, { token: i1$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
188
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: ReviewInstructionsDialogComponent, isStandalone: true, selector: "tgo-review-instructions-dialog", providers: [
|
|
183
189
|
TranslocoLazyModuleUtils.getScopeProvider('tgo-immersive-test-review-instructions', getAvailableLangs(), 'INSTRUCTIONS_MODAL', (lang) => {
|
|
184
190
|
// Fetch from app assets; demo app copies the library assets to
|
|
185
191
|
// /assets/tgo-immersive-test via project.json.
|
|
186
192
|
const url = new URL(`assets/tgo-immersive-test/i18n/${lang}.json`, document.baseURI).href;
|
|
187
193
|
return fetch(url).then((res) => res.json());
|
|
188
194
|
}),
|
|
189
|
-
], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <ui-dialog\n class=\"dialog-wrapper\"\n [title]=\"translations['TITLE']\"\n [secondaryButtonLabel]=\"translations['CLOSE']\"\n (secondaryButtonClickEvent)=\"closeDialog()\"\n >\n <section class=\"containers-section\">\n <div class=\"immersive-test-instructions-container\">\n <div\n class=\"background-information-container\"\n *ngIf=\"dialogData?.backgroundInfoData\"\n >\n <ui-card class=\"background-information-card\" variant=\"neutral\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.backgroundInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n\n <div\n class=\"inner-instructions-container\"\n *ngIf=\"dialogData?.instructionsInfoData\"\n >\n <ui-card class=\"instructions-card\" variant=\"educative\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.instructionsInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n </div>\n </section>\n </ui-dialog>\n</ng-container>\n\n", styles: ["@charset \"UTF-8\";:host .dialog-wrapper{width:100%}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section{width:100%;display:flex;flex-direction:column;justify-content:center;padding:.3rem .8rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container{display:flex;justify-content:space-between;width:100%;gap:2.5rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container{display:flex;flex-direction:column;width:100%;max-width:450px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor{padding:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h1,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h2,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h3,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h4,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h5,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h6{font-size:16px;font-weight:700;line-height:20px;margin-bottom:.6rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor p,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor span{font-size:14px;margin-bottom:1.5rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor p:last-child,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor span:last-child{margin-bottom:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor br{display:none}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container{display:flex;flex-direction:column;gap:2.5rem;width:100%;max-width:450px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container{border-width:1px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor{padding:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h1,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h2,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h3,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h4,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h5,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h6{font-size:16px;font-weight:700;line-height:20px;margin-bottom:.6rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor p:before,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor span:before{content:\"\\2022 \";color:#000;font-size:1em;position:absolute;left:8px;top:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor p,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor span{position:relative;font-size:14px;padding-left:22px;margin:3px 0 0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol{padding-left:10px;margin:5px 0 0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul li,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol li{font-size:14px;padding-left:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul li span:before,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol li span:before{top:-3px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul li span,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol li span{padding-left:12px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor br{display:none}@media (max-width: 799px){:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section{padding-top:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container{flex-wrap:wrap}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container{max-width:none}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container{max-width:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: DialogComponentModule }, { kind: "component", type: i4.DialogComponent, selector: "ui-dialog", inputs: ["title", "showCloseButton", "canCloseFn", "secondaryButtonLabel", "footerMessage", "primaryButtonLabel", "primaryButtonIconName", "secondaryButtonType", "primaryButtonType", "primaryButtonDataTestId", "secondaryButtonDataTestId", "companyColor", "applicationTheme", "disablePrimaryButton", "disableClose", "shouldDisableButtons", "ariaLabelledby", "ariaDescribedby", "keyboardOpen", "primaryButtonIconPosition"], outputs: ["closeEvent", "secondaryButtonClickEvent", "primaryButtonClickEvent"] }, { kind: "ngmodule", type: CardComponentModule }, { kind: "component", type: i4.CardComponent, selector: "ui-card", inputs: ["size", "variant", "applicationTheme", "errors", "errorsSize", "selected", "allowSelect", "allowFocus"], outputs: ["cardSelected"] }, { kind: "component", type: QuillViewComponent, selector: "quill-view", inputs: ["format", "theme", "modules", "debug", "formats", "sanitize", "beforeRender", "strict", "content", "customModules", "customOptions"], outputs: ["onEditorCreated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
195
|
+
], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <ui-dialog\n class=\"dialog-wrapper\"\n [title]=\"translations['TITLE']\"\n [secondaryButtonLabel]=\"translations['CLOSE']\"\n (secondaryButtonClickEvent)=\"closeDialog()\"\n >\n <section class=\"containers-section\">\n <div class=\"immersive-test-instructions-container\">\n <div\n class=\"background-information-container\"\n *ngIf=\"dialogData?.backgroundInfoData\"\n >\n <ui-card class=\"background-information-card\" variant=\"neutral\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.backgroundInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n\n <div\n class=\"inner-instructions-container\"\n *ngIf=\"dialogData?.instructionsInfoData\"\n >\n <ui-card class=\"instructions-card\" variant=\"educative\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.instructionsInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n </div>\n </section>\n </ui-dialog>\n</ng-container>\n\n", styles: ["@charset \"UTF-8\";:host .dialog-wrapper{width:100%}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section{width:100%;display:flex;flex-direction:column;justify-content:center;padding:.3rem .8rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container{display:flex;justify-content:space-between;width:100%;gap:2.5rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container{display:flex;flex-direction:column;width:100%;max-width:450px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor{padding:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h1,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h2,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h3,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h4,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h5,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor h6{font-size:16px;font-weight:700;line-height:20px;margin-bottom:.6rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor p,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor span{font-size:14px;margin-bottom:1.5rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor p:last-child,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor span:last-child{margin-bottom:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container .background-information-card .content-container .ql-container .ql-editor br{display:none}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container{display:flex;flex-direction:column;gap:2.5rem;width:100%;max-width:450px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container{border-width:1px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor{padding:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h1,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h2,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h3,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h4,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h5,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor h6{font-size:16px;font-weight:700;line-height:20px;margin-bottom:.6rem}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor p:before,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor span:before{content:\"\\2022 \";color:#000;font-size:1em;position:absolute;left:8px;top:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor p,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor span{position:relative;font-size:14px;padding-left:22px;margin:3px 0 0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol{padding-left:10px;margin:5px 0 0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul li,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol li{font-size:14px;padding-left:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul li span:before,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol li span:before{top:-3px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ul li span,:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor ol li span{padding-left:12px}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container .instructions-card .card-container .ql-container .ql-editor br{display:none}@media (max-width: 799px){:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section{padding-top:0}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container{flex-wrap:wrap}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .background-information-container{max-width:none}:host .dialog-wrapper ::ng-deep .mat-mdc-dialog-content .containers-section .immersive-test-instructions-container .inner-instructions-container{max-width:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: DialogComponentModule }, { kind: "component", type: i4.DialogComponent, selector: "ui-dialog", inputs: ["title", "showCloseButton", "canCloseFn", "secondaryButtonLabel", "footerMessage", "primaryButtonLabel", "primaryButtonIconName", "secondaryButtonType", "primaryButtonType", "primaryButtonDataTestId", "secondaryButtonDataTestId", "companyColor", "applicationTheme", "disablePrimaryButton", "disableClose", "shouldDisableButtons", "ariaLabelledby", "ariaDescribedby", "keyboardOpen", "primaryButtonIconPosition"], outputs: ["closeEvent", "secondaryButtonClickEvent", "primaryButtonClickEvent"] }, { kind: "ngmodule", type: CardComponentModule }, { kind: "component", type: i5.CardComponent, selector: "ui-card", inputs: ["size", "variant", "applicationTheme", "errors", "errorsSize", "selected", "allowSelect", "allowFocus"], outputs: ["cardSelected"] }, { kind: "component", type: QuillViewComponent, selector: "quill-view", inputs: ["format", "theme", "modules", "debug", "formats", "sanitize", "beforeRender", "strict", "content", "customModules", "customOptions"], outputs: ["onEditorCreated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
190
196
|
}
|
|
191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ReviewInstructionsDialogComponent, decorators: [{
|
|
192
198
|
type: Component,
|
|
193
199
|
args: [{ selector: 'tgo-review-instructions-dialog', providers: [
|
|
194
200
|
TranslocoLazyModuleUtils.getScopeProvider('tgo-immersive-test-review-instructions', getAvailableLangs(), 'INSTRUCTIONS_MODAL', (lang) => {
|
|
@@ -371,8 +377,8 @@ class ImmersiveTestComponent {
|
|
|
371
377
|
void this.initVideoStream();
|
|
372
378
|
});
|
|
373
379
|
}
|
|
374
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
375
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
380
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ImmersiveTestComponent, deps: [{ token: TRANSLOCO_SCOPE }], target: i0.ɵɵFactoryTarget.Component });
|
|
381
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: ImmersiveTestComponent, isStandalone: true, selector: "tgo-immersive-test", inputs: { question: "question", test: "test", isFirstQuestion: "isFirstQuestion", expirationObservable: "expirationObservable", selectedMediaDevices: "selectedMediaDevices", mediaAccessChanged: "mediaAccessChanged" }, outputs: { submissionStateChanged: "submissionStateChanged", loadingStateChanged: "loadingStateChanged", requestMediaAccess: "requestMediaAccess" }, providers: [
|
|
376
382
|
TranslocoLazyModuleUtils.getScopeProvider('tgo-immersive-test', getAvailableLangs(), ROOT_TRANSLATIONS_SCOPE, (lang) => {
|
|
377
383
|
// Fetch from app assets; demo app copies the library assets to
|
|
378
384
|
// /assets/tgo-immersive-test via project.json.
|
|
@@ -381,14 +387,14 @@ class ImmersiveTestComponent {
|
|
|
381
387
|
}),
|
|
382
388
|
DialogService,
|
|
383
389
|
ThemeService,
|
|
384
|
-
], viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["video"], descendants: true }, { propertyName: "audioElement", first: true, predicate: ["audio"], descendants: true }], ngImport: i0, template: "<div class=\"immersive-test\">\n <div class=\"test-container\">\n <div\n class=\"media-container\"\n [class.is-video-visible]=\"isQuestionPlaying() && !isAnswering()\"\n [class.is-playing]=\"isVideoPlaying()\"\n [class.is-answering]=\"isAnswering()\"\n >\n <div class=\"candidate-no-camera\" *ngIf=\"!candidateVideoStreamReady()\">\n <h3> </h3>\n <tgo-audio-animation\n *ngIf=\"isAnswering()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <ui-icon name=\"User-profile-in-line\" color=\"white\" size=\"24\"></ui-icon>\n <h3 class=\"bold\">{{ translations['YOU'] }}</h3>\n </div>\n <div class=\"candidate-camera\" [hidden]=\"!candidateVideoStreamReady()\">\n <tgo-audio-animation\n *ngIf=\"isAnswering() && candidateVideoStreamReady()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <video height #video id=\"video\" playsinline (loadedmetadata)=\"onVideoLoad()\"></video>\n <h3 class=\"bold\" *ngIf=\"candidateVideoStreamReady()\">\n {{ translations['YOU'] }}\n </h3>\n </div>\n <tgo-audio-animation *ngIf=\"isVideoPlaying()\" [fakeData]=\"true\"></tgo-audio-animation>\n <tgo-vimeo-video\n *ngIf=\"isVideo\"\n [isPlaying]=\"isQuestionPlaying()\"\n [videoUrl]=\"fileUrl\"\n (videoEnded)=\"startCountdown()\"\n (videoStarted)=\"isVideoPlaying.set(true)\"\n ></tgo-vimeo-video>\n <div class=\"audio-info\" *ngIf=\"isQuestionPlaying() && !isVideo\">\n <ui-icon name=\"User-profile-filled\" color=\"white\" size=\"80\"></ui-icon>\n </div>\n <div class=\"start\" *ngIf=\"isFirstQuestion && !isQuestionPlaying()\">\n <tgo-ringing-phone-animation [isRinging]=\"true\"></tgo-ringing-phone-animation>\n <ui-button\n [label]=\"translations['ANSWER']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"startQuestion()\"\n data-testid=\"immersive-test.start-question-btn\"\n ></ui-button>\n </div>\n <div class=\"overlay\" *ngIf=\"isAnswering() || isCountingDown()\" [@fadeInFadeOut]>\n <div class=\"answer\" *ngIf=\"!audioUrl() && isAnswering()\">\n <div>\n <h3 class=\"uppercase recording-started\">\n <span class=\"recording-dot\"></span>{{ translations['RECORDING_STARTED'] }}\n </h3>\n <h1 class=\"bold\">\n {{ translations['ANSWER_THE_QUESTION'] }}\n </h1>\n </div>\n <ui-button\n [label]=\"translations['ANSWER_COMPLETED']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"stopRecording()\"\n data-testid=\"immersive-test.stop-recording-btn\"\n ></ui-button>\n </div>\n <div class=\"answer\" *ngIf=\"isCountingDown()\">\n <div>\n <h1 class=\"bold\">\n {{ translations['GET_READY'] }}\n </h1>\n </div>\n <tgo-video-countdown (finished)=\"startRecordAnswer()\"></tgo-video-countdown>\n <div> </div>\n </div>\n <div class=\"preview\" [class.hidden]=\"!audioUrl()\" *ngIf=\"test.is_preview_mode\">\n <h4>{{ translations['AUDIO_READY'] }}</h4>\n <p>{{ translations['AUDIO_PREVIEW'] }}</p>\n <audio #audio controls></audio>\n </div>\n </div>\n </div>\n <div class=\"media-info\">\n <h3 class=\"bold\">{{ translations['CUSTOMER'] }}</h3>\n <ui-button\n [hidden]=\"!test.test_instruction && !test.intro_text\"\n class=\"review-button\"\n [label]=\"translations['REVIEW_INSTRUCTIONS']\"\n variant=\"secondary\"\n size=\"small\"\n (click)=\"openReviewInstructionsDialog()\"\n data-testid=\"immersive-test.review-instructions-btn\"\n ></ui-button>\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.immersive-test{padding:0 64px;margin-top:40px}.immersive-test .media-info{width:100%;display:flex;justify-content:space-between;align-items:center;background:#242424a8;background-color:#242424;border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:13px 32px;color:#fff}.immersive-test .media-info ::ng-deep ui-button button{border-color:#fff;color:#fff}.immersive-test .test-container{min-width:360px;max-width:1312px;min-height:725px;height:min(725px,100%,max(100vw - 200px,100vh - 200px,200px));border-radius:10px;display:flex;flex-direction:column;justify-content:space-between;position:relative;background-color:#242424}.immersive-test .media-container{position:relative;color:#fff;flex-grow:1;border-top-left-radius:10px;border-top-right-radius:10px;aspect-ratio:16/9}.immersive-test .media-container .candidate-no-camera{position:absolute;width:200px;aspect-ratio:16/9;z-index:3;top:32px;left:32px;border-radius:10px;background-color:#1a47aa;display:flex;justify-content:space-between;flex-direction:column;padding:16px}.immersive-test .media-container .candidate-no-camera ui-icon{margin:auto}.immersive-test .media-container .candidate-camera{position:absolute;width:200px;top:32px;left:32px;z-index:3}.immersive-test .media-container .candidate-camera video{width:200px;border-radius:10px}.immersive-test .media-container .candidate-camera h3{position:absolute;bottom:16px;left:16px}.immersive-test .media-container tgo-audio-animation{position:absolute;top:32px;right:32px;z-index:1}.immersive-test .media-container tgo-vimeo-video{display:none;position:absolute;height:100%;width:100%}.immersive-test .media-container.is-video-visible tgo-vimeo-video{display:block}.immersive-test .media-container.is-playing{border:4px solid #0165FC;border-bottom-width:3px}.immersive-test .media-container.is-answering .candidate-camera tgo-audio-animation,.immersive-test .media-container.is-answering .candidate-no-camera tgo-audio-animation{position:absolute;top:16px;right:16px}.immersive-test .media-container.is-answering .candidate-camera video,.immersive-test .media-container.is-answering .candidate-no-camera{border:3px solid #0165FC;border-radius:10px}.immersive-test .media-container.is-answering tgo-vimeo-video{display:block}.immersive-test .media-container .start,.immersive-test .media-container .audio-info,.immersive-test .media-container .overlay,.immersive-test .media-container .answer{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:40px;height:100%}.immersive-test .media-container .preview{height:100%;display:flex;align-items:center;flex-direction:column;justify-content:flex-end;padding:24px}.immersive-test .media-container .preview p{color:#d3d3d3;margin:8px 0}.immersive-test .media-container .preview audio{margin:16px 0}.immersive-test .media-container .preview.hidden{display:none}.immersive-test h3,.immersive-test h4{color:#fff}.immersive-test .bold{font-weight:700}.immersive-test ui-button.review-button ::ng-deep button{border:1px solid #ffffff}.immersive-test ui-button.white-btn ::ng-deep button{background-color:#fff;border-color:#fff;color:#000}.immersive-test ui-button.white-btn ::ng-deep button:hover{background-color:#666!important}.immersive-test .overlay{top:0;position:absolute;width:100%;height:100%;background-color:#242424e0;z-index:2;border-radius:10px}.immersive-test .overlay h1,.immersive-test .overlay h3{color:#fff;text-align:center}.immersive-test .overlay h3{margin-bottom:10px}.immersive-test tgo-radial-progress{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.immersive-test .uppercase{text-transform:uppercase}.immersive-test .recording-started{display:flex;align-items:center;justify-content:center;gap:10px}.immersive-test .recording-dot{background-color:#ff3003;display:inline-block;width:20px;height:20px;border-radius:50%}@media screen and (max-width: 600px){.immersive-test{padding:0 24px;margin-top:16px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslocoModule }, { kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i4.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "ngmodule", type: IconComponentModule }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: VimeoVideoComponent, selector: "tgo-vimeo-video", inputs: ["videoUrl", "isPlaying", "options"], outputs: ["videoEnded", "videoStarted"] }, { kind: "component", type: VideoCountdownComponent, selector: "tgo-video-countdown", inputs: ["startFrom", "endAt", "interval"], outputs: ["finished"] }, { kind: "component", type: RingingPhoneAnimationComponent, selector: "tgo-ringing-phone-animation", inputs: ["isRinging"] }, { kind: "component", type: AudioAnimationComponent, selector: "tgo-audio-animation", inputs: ["volume", "fakeData"] }], animations: [
|
|
390
|
+
], viewQueries: [{ propertyName: "videoElement", first: true, predicate: ["video"], descendants: true }, { propertyName: "audioElement", first: true, predicate: ["audio"], descendants: true }], ngImport: i0, template: "<div class=\"immersive-test\">\n <div class=\"test-container\">\n <div\n class=\"media-container\"\n [class.is-video-visible]=\"isQuestionPlaying() && !isAnswering()\"\n [class.is-playing]=\"isVideoPlaying()\"\n [class.is-answering]=\"isAnswering()\"\n >\n <div class=\"candidate-no-camera\" *ngIf=\"!candidateVideoStreamReady()\">\n <h3> </h3>\n <tgo-audio-animation\n *ngIf=\"isAnswering()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <ui-icon name=\"User-profile-in-line\" color=\"white\" size=\"24\"></ui-icon>\n <h3 class=\"bold\">{{ translations['YOU'] }}</h3>\n </div>\n <div class=\"candidate-camera\" [hidden]=\"!candidateVideoStreamReady()\">\n <tgo-audio-animation\n *ngIf=\"isAnswering() && candidateVideoStreamReady()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <video height #video id=\"video\" playsinline (loadedmetadata)=\"onVideoLoad()\"></video>\n <h3 class=\"bold\" *ngIf=\"candidateVideoStreamReady()\">\n {{ translations['YOU'] }}\n </h3>\n </div>\n <tgo-audio-animation *ngIf=\"isVideoPlaying()\" [fakeData]=\"true\"></tgo-audio-animation>\n <tgo-vimeo-video\n *ngIf=\"isVideo\"\n [isPlaying]=\"isQuestionPlaying()\"\n [videoUrl]=\"fileUrl\"\n (videoEnded)=\"startCountdown()\"\n (videoStarted)=\"isVideoPlaying.set(true)\"\n ></tgo-vimeo-video>\n <div class=\"audio-info\" *ngIf=\"isQuestionPlaying() && !isVideo\">\n <ui-icon name=\"User-profile-filled\" color=\"white\" size=\"80\"></ui-icon>\n </div>\n <div class=\"start\" *ngIf=\"isFirstQuestion && !isQuestionPlaying()\">\n <tgo-ringing-phone-animation [isRinging]=\"true\"></tgo-ringing-phone-animation>\n <ui-button\n [label]=\"translations['ANSWER']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"startQuestion()\"\n data-testid=\"immersive-test.start-question-btn\"\n ></ui-button>\n </div>\n <div class=\"overlay\" *ngIf=\"isAnswering() || isCountingDown()\" [@fadeInFadeOut]>\n <div class=\"answer\" *ngIf=\"!audioUrl() && isAnswering()\">\n <div>\n <h3 class=\"uppercase recording-started\">\n <span class=\"recording-dot\"></span>{{ translations['RECORDING_STARTED'] }}\n </h3>\n <h1 class=\"bold\">\n {{ translations['ANSWER_THE_QUESTION'] }}\n </h1>\n </div>\n <ui-button\n [label]=\"translations['ANSWER_COMPLETED']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"stopRecording()\"\n data-testid=\"immersive-test.stop-recording-btn\"\n ></ui-button>\n </div>\n <div class=\"answer\" *ngIf=\"isCountingDown()\">\n <div>\n <h1 class=\"bold\">\n {{ translations['GET_READY'] }}\n </h1>\n </div>\n <tgo-video-countdown (finished)=\"startRecordAnswer()\"></tgo-video-countdown>\n <div> </div>\n </div>\n <div class=\"preview\" [class.hidden]=\"!audioUrl()\" *ngIf=\"test.is_preview_mode\">\n <h4>{{ translations['AUDIO_READY'] }}</h4>\n <p>{{ translations['AUDIO_PREVIEW'] }}</p>\n <audio #audio controls></audio>\n </div>\n </div>\n </div>\n <div class=\"media-info\">\n <h3 class=\"bold\">{{ translations['CUSTOMER'] }}</h3>\n <ui-button\n [hidden]=\"!test.test_instruction && !test.intro_text\"\n class=\"review-button\"\n [label]=\"translations['REVIEW_INSTRUCTIONS']\"\n variant=\"secondary\"\n size=\"small\"\n (click)=\"openReviewInstructionsDialog()\"\n data-testid=\"immersive-test.review-instructions-btn\"\n ></ui-button>\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.immersive-test{padding:0 64px;margin-top:40px}.immersive-test .media-info{width:100%;display:flex;justify-content:space-between;align-items:center;background:#242424a8;background-color:#242424;border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:13px 32px;color:#fff}.immersive-test .media-info ::ng-deep ui-button button{border-color:#fff;color:#fff}.immersive-test .test-container{min-width:360px;max-width:1312px;min-height:725px;height:min(725px,100%,max(100vw - 200px,100vh - 200px,200px));border-radius:10px;display:flex;flex-direction:column;justify-content:space-between;position:relative;background-color:#242424}.immersive-test .media-container{position:relative;color:#fff;flex-grow:1;border-top-left-radius:10px;border-top-right-radius:10px;aspect-ratio:16/9}.immersive-test .media-container .candidate-no-camera{position:absolute;width:200px;aspect-ratio:16/9;z-index:3;top:32px;left:32px;border-radius:10px;background-color:#1a47aa;display:flex;justify-content:space-between;flex-direction:column;padding:16px}.immersive-test .media-container .candidate-no-camera ui-icon{margin:auto}.immersive-test .media-container .candidate-camera{position:absolute;width:200px;top:32px;left:32px;z-index:3}.immersive-test .media-container .candidate-camera video{width:200px;border-radius:10px}.immersive-test .media-container .candidate-camera h3{position:absolute;bottom:16px;left:16px}.immersive-test .media-container tgo-audio-animation{position:absolute;top:32px;right:32px;z-index:1}.immersive-test .media-container tgo-vimeo-video{display:none;position:absolute;height:100%;width:100%}.immersive-test .media-container.is-video-visible tgo-vimeo-video{display:block}.immersive-test .media-container.is-playing{border:4px solid #0165FC;border-bottom-width:3px}.immersive-test .media-container.is-answering .candidate-camera tgo-audio-animation,.immersive-test .media-container.is-answering .candidate-no-camera tgo-audio-animation{position:absolute;top:16px;right:16px}.immersive-test .media-container.is-answering .candidate-camera video,.immersive-test .media-container.is-answering .candidate-no-camera{border:3px solid #0165FC;border-radius:10px}.immersive-test .media-container.is-answering tgo-vimeo-video{display:block}.immersive-test .media-container .start,.immersive-test .media-container .audio-info,.immersive-test .media-container .overlay,.immersive-test .media-container .answer{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:40px;height:100%}.immersive-test .media-container .preview{height:100%;display:flex;align-items:center;flex-direction:column;justify-content:flex-end;padding:24px}.immersive-test .media-container .preview p{color:#d3d3d3;margin:8px 0}.immersive-test .media-container .preview audio{margin:16px 0}.immersive-test .media-container .preview.hidden{display:none}.immersive-test h3,.immersive-test h4{color:#fff}.immersive-test .bold{font-weight:700}.immersive-test ui-button.review-button ::ng-deep button{border:1px solid #ffffff}.immersive-test ui-button.white-btn ::ng-deep button{background-color:#fff;border-color:#fff;color:#000}.immersive-test ui-button.white-btn ::ng-deep button:hover{background-color:#666!important}.immersive-test .overlay{top:0;position:absolute;width:100%;height:100%;background-color:#242424e0;z-index:2;border-radius:10px}.immersive-test .overlay h1,.immersive-test .overlay h3{color:#fff;text-align:center}.immersive-test .overlay h3{margin-bottom:10px}.immersive-test tgo-radial-progress{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.immersive-test .uppercase{text-transform:uppercase}.immersive-test .recording-started{display:flex;align-items:center;justify-content:center;gap:10px}.immersive-test .recording-dot{background-color:#ff3003;display:inline-block;width:20px;height:20px;border-radius:50%}@media screen and (max-width: 600px){.immersive-test{padding:0 24px;margin-top:16px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslocoModule }, { kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i1$2.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "ngmodule", type: IconComponentModule }, { kind: "component", type: i2.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: VimeoVideoComponent, selector: "tgo-vimeo-video", inputs: ["videoUrl", "isPlaying", "options"], outputs: ["videoEnded", "videoStarted"] }, { kind: "component", type: VideoCountdownComponent, selector: "tgo-video-countdown", inputs: ["startFrom", "endAt", "interval"], outputs: ["finished"] }, { kind: "component", type: RingingPhoneAnimationComponent, selector: "tgo-ringing-phone-animation", inputs: ["isRinging"] }, { kind: "component", type: AudioAnimationComponent, selector: "tgo-audio-animation", inputs: ["volume", "fakeData"] }], animations: [
|
|
385
391
|
trigger('fadeInFadeOut', [
|
|
386
392
|
transition(':enter', [style({ opacity: 0 }), animate('600ms', style({ opacity: 1 }))]),
|
|
387
393
|
transition(':leave', [animate('600ms', style({ opacity: 0 }))]),
|
|
388
394
|
]),
|
|
389
395
|
] });
|
|
390
396
|
}
|
|
391
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ImmersiveTestComponent, decorators: [{
|
|
392
398
|
type: Component,
|
|
393
399
|
args: [{ selector: 'tgo-immersive-test', animations: [
|
|
394
400
|
trigger('fadeInFadeOut', [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-immersive-test.mjs","sources":["../../../../packages/tgo-immersive-test/src/lib/components/video-countdown/video-countdown.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/video-countdown/video-countdown.component.html","../../../../packages/tgo-immersive-test/src/lib/components/ringing-phone-animation/ringing-phone-animation.sound.ts","../../../../packages/tgo-immersive-test/src/lib/components/ringing-phone-animation/ringing-phone-animation.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/ringing-phone-animation/ringing-phone-animation.component.html","../../../../packages/tgo-immersive-test/src/lib/services/index.ts","../../../../packages/tgo-immersive-test/src/lib/components/review-instructions-dialog/review-instructions-dialog.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/review-instructions-dialog/review-instructions-dialog.component.html","../../../../packages/tgo-immersive-test/src/lib/models/translations.ts","../../../../packages/tgo-immersive-test/src/lib/components/immersive-test/immersive-test.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/immersive-test/immersive-test.component.html","../../../../packages/tgo-immersive-test/src/lib/components/index.ts","../../../../packages/tgo-immersive-test/src/testgorilla-tgo-immersive-test.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'tgo-video-countdown',\n templateUrl: './video-countdown.component.html',\n styleUrls: ['./video-countdown.component.scss'],\n animations: [\n trigger('zoomInOut', [\n transition(':enter', [\n style({ transform: 'scale(0)', opacity: 0 }),\n animate('300ms ease-out', style({ transform: 'scale(1.2)', opacity: 1 })),\n animate('100ms ease-in', style({ transform: 'scale(1)' })),\n ]),\n transition(':leave', [\n style({ opacity: 1 }),\n animate('100ms ease-out', style({ transform: 'scale(1.2)', opacity: 0.5 })),\n animate('200ms ease-in', style({ transform: 'scale(0)', opacity: 0 })),\n ]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class VideoCountdownComponent implements OnInit, OnDestroy {\n @Input() startFrom = 5;\n @Input() endAt = 0;\n @Input() interval = 1325;\n @Output() finished: EventEmitter<void> = new EventEmitter<void>();\n\n isActive = false;\n displayNum: { key: number; value: number } = {\n key: this.startFrom,\n value: this.startFrom,\n };\n timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.start();\n }\n\n start() {\n this.isActive = true;\n this.displayNum = { key: this.startFrom, value: this.startFrom };\n this.scheduleAnimation();\n }\n\n ngOnDestroy(): void {\n this.isActive = false;\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n }\n\n private scheduleAnimation() {\n this.timeoutId = setTimeout(() => {\n this.anim();\n }, this.interval);\n }\n\n private anim() {\n if (!this.isActive) {\n return;\n }\n\n this.updateNumber();\n this.cdr.markForCheck();\n\n if (this.displayNum && this.displayNum.value === this.endAt) {\n this.finished.emit();\n this.isActive = false;\n return;\n }\n\n this.scheduleAnimation();\n }\n\n private updateNumber() {\n if (this.displayNum && this.displayNum.value === this.endAt) {\n this.displayNum = { key: this.startFrom, value: this.startFrom - 1 };\n } else {\n this.displayNum = {\n key: this.displayNum.value - 1,\n value: this.displayNum.value - 1,\n };\n }\n }\n}\n","<div class=\"video-countdown\">\n <div\n class=\"video-countdown-element\"\n *ngFor=\"let num of [displayNum]\"\n @zoomInOut\n >\n {{ num.value }}\n </div>\n</div>\n\n","export const ringingPhoneSound = `data:audio/mp3;base64,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`;\n\n","import {\n Component,\n WritableSignal,\n signal,\n Input,\n SimpleChanges,\n OnChanges,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ringingPhoneSound } from './ringing-phone-animation.sound';\n\n@Component({\n selector: 'tgo-ringing-phone-animation',\n templateUrl: './ringing-phone-animation.component.html',\n styleUrls: ['./ringing-phone-animation.component.scss'],\n imports: [CommonModule]\n})\nexport class RingingPhoneAnimationComponent implements OnChanges, OnDestroy {\n @Input() isRinging = true;\n\n ringingSignal: WritableSignal<boolean> = signal(this.isRinging);\n audio: HTMLAudioElement = new Audio(ringingPhoneSound);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isRinging']) {\n this.ringingSignal.set(this.isRinging);\n\n if (this.isRinging) {\n this.startRinging();\n } else {\n this.stopRinging();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.stopRinging();\n }\n\n private stopRinging(): void {\n this.ringingSignal.set(false);\n this.audio.pause();\n this.audio.currentTime = 0;\n }\n\n private startRinging(): void {\n this.audio.loop = true;\n this.audio.volume = 0.15;\n void this.audio.play();\n }\n}\n\n","<div class=\"ringing-phone-animation-wrapper\">\n <section class=\"ringing-phone-animation-container\">\n <div class=\"ringing-effect\" *ngIf=\"ringingSignal()\">\n <div class=\"ringing-line first-line\"></div>\n <div class=\"ringing-line second-line\"></div>\n <div class=\"ringing-line third-line\"></div>\n </div>\n <svg width=\"76\" height=\"30\" viewBox=\"0 0 76 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.33348 28.5122L1.66681 21.0122C1.00014 20.3455 0.666809 19.5678 0.666809 18.6789C0.666809 17.79 1.00014 17.0122 1.66681 16.3455C6.5557 11.0678 12.1946 7.10943 18.5835 4.47054C24.9724 1.83165 31.4446 0.512207 38.0001 0.512207C44.5557 0.512207 51.014 1.83165 57.3751 4.47054C63.7363 7.10943 69.389 11.0678 74.3335 16.3455C75.0001 17.0122 75.3335 17.79 75.3335 18.6789C75.3335 19.5678 75.0001 20.3455 74.3335 21.0122L66.6668 28.5122C66.0557 29.1233 65.3474 29.4567 64.5418 29.5122C63.7363 29.5678 63.0001 29.3455 62.3335 28.8455L52.6668 21.5122C52.2224 21.1789 51.889 20.79 51.6668 20.3455C51.4446 19.9011 51.3335 19.4011 51.3335 18.8455V9.34554C49.2224 8.67888 47.0557 8.1511 44.8335 7.76221C42.6113 7.37332 40.3335 7.17887 38.0001 7.17887C35.6668 7.17887 33.389 7.37332 31.1668 7.76221C28.9446 8.1511 26.7779 8.67888 24.6668 9.34554V18.8455C24.6668 19.4011 24.5557 19.9011 24.3335 20.3455C24.1113 20.79 23.7779 21.1789 23.3335 21.5122L13.6668 28.8455C13.0001 29.3455 12.264 29.5678 11.4585 29.5122C10.6529 29.4567 9.94459 29.1233 9.33348 28.5122ZM18.0001 11.6789C16.389 12.5122 14.8335 13.4705 13.3335 14.5539C11.8335 15.6372 10.2779 16.8455 8.66681 18.1789L12.0001 21.5122L18.0001 16.8455V11.6789ZM58.0001 11.8455V16.8455L64.0001 21.5122L67.3335 18.3455C65.7224 16.9011 64.1668 15.6511 62.6668 14.5955C61.1668 13.54 59.6113 12.6233 58.0001 11.8455Z\"\n fill=\"white\"\n />\n </svg>\n </section>\n</div>\n\n","// Re-export shared services\nexport {\n MediaService,\n ThemeService,\n TranslocoLazyModuleUtils,\n getAvailableLangs,\n} from '@testgorilla/tgo-shared-lib';\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Inject,\n OnInit,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport {\n TRANSLOCO_SCOPE,\n TranslocoModule,\n TranslocoScope,\n TranslocoService,\n} from '@ngneat/transloco';\nimport { CardComponentModule, DialogComponentModule } from '@testgorilla/tgo-ui';\nimport { QuillViewComponent } from 'ngx-quill';\nimport { firstValueFrom } from 'rxjs';\nimport { getAvailableLangs, TranslocoLazyModuleUtils } from '../../services';\n\nexport interface ReviewInstructionsDialogData {\n backgroundInfoData?: string;\n instructionsInfoData?: string;\n}\n\n@Component({\n selector: 'tgo-review-instructions-dialog',\n templateUrl: './review-instructions-dialog.component.html',\n styleUrls: ['./review-instructions-dialog.component.scss'],\n providers: [\n TranslocoLazyModuleUtils.getScopeProvider('tgo-immersive-test-review-instructions', getAvailableLangs(), 'INSTRUCTIONS_MODAL', (lang: string) => {\n // Fetch from app assets; demo app copies the library assets to\n // /assets/tgo-immersive-test via project.json.\n const url = new URL(`assets/tgo-immersive-test/i18n/${lang}.json`, document.baseURI).href;\n return fetch(url).then((res) => res.json());\n }),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslocoModule,\n DialogComponentModule,\n CardComponentModule,\n QuillViewComponent,\n ]\n})\nexport class ReviewInstructionsDialogComponent implements OnInit {\n translations: { [key: string]: string } = {};\n\n private translocoService = inject(TranslocoService);\n private cdr = inject(ChangeDetectorRef);\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public dialogData: ReviewInstructionsDialogData,\n @Inject(TRANSLOCO_SCOPE) private translationScope: TranslocoScope,\n private dialogRef: MatDialogRef<ReviewInstructionsDialogComponent>\n ) {}\n\n ngOnInit(): void {\n void this.setTranslations();\n }\n\n closeDialog(): void {\n this.dialogRef.close(false);\n }\n\n private async setTranslations(): Promise<void> {\n this.translations = await firstValueFrom(\n this.translocoService.selectTranslateObject(\n `INSTRUCTIONS_MODAL`,\n {},\n this.translationScope as string\n )\n );\n this.cdr.markForCheck();\n }\n}\n","<ng-container *transloco=\"let t\">\n <ui-dialog\n class=\"dialog-wrapper\"\n [title]=\"translations['TITLE']\"\n [secondaryButtonLabel]=\"translations['CLOSE']\"\n (secondaryButtonClickEvent)=\"closeDialog()\"\n >\n <section class=\"containers-section\">\n <div class=\"immersive-test-instructions-container\">\n <div\n class=\"background-information-container\"\n *ngIf=\"dialogData?.backgroundInfoData\"\n >\n <ui-card class=\"background-information-card\" variant=\"neutral\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.backgroundInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n\n <div\n class=\"inner-instructions-container\"\n *ngIf=\"dialogData?.instructionsInfoData\"\n >\n <ui-card class=\"instructions-card\" variant=\"educative\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.instructionsInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n </div>\n </section>\n </ui-dialog>\n</ng-container>\n\n","// Re-export from shared\nexport { ROOT_TRANSLATIONS_SCOPE } from '@testgorilla/tgo-shared-lib';\n\n","import {\n AudioAnimationComponent,\n VimeoVideoComponent,\n Question,\n TestResultRead,\n SelectedMediaDevices,\n ISubmissionState,\n IQuestionDataContract,\n MediaService,\n ThemeService,\n TranslocoLazyModuleUtils,\n getAvailableLangs,\n} from '@testgorilla/tgo-shared-lib';\nimport { VideoCountdownComponent } from '../video-countdown';\nimport { RingingPhoneAnimationComponent } from '../ringing-phone-animation';\nimport {\n ReviewInstructionsDialogComponent,\n ReviewInstructionsDialogData,\n} from '../review-instructions-dialog';\nimport { ROOT_TRANSLATIONS_SCOPE } from '../../models/translations';\nimport { catchError, firstValueFrom, Observable, takeUntil } from 'rxjs';\nimport { transition, style, animate, trigger } from '@angular/animations';\nimport {\n ElementRef,\n OnDestroy,\n signal,\n ViewChild,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n OnInit,\n Inject,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ButtonComponentModule, DialogService, IconComponentModule } from '@testgorilla/tgo-ui';\nimport { CommonModule } from '@angular/common';\nimport {\n TRANSLOCO_SCOPE,\n TranslocoModule,\n TranslocoScope,\n TranslocoService,\n} from '@ngneat/transloco';\n\n@Component({\n selector: 'tgo-immersive-test',\n templateUrl: './immersive-test.component.html',\n styleUrl: './immersive-test.component.scss',\n animations: [\n trigger('fadeInFadeOut', [\n transition(':enter', [style({ opacity: 0 }), animate('600ms', style({ opacity: 1 }))]),\n transition(':leave', [animate('600ms', style({ opacity: 0 }))]),\n ]),\n ],\n imports: [\n TranslocoModule,\n ButtonComponentModule,\n IconComponentModule,\n CommonModule,\n VimeoVideoComponent,\n VideoCountdownComponent,\n RingingPhoneAnimationComponent,\n AudioAnimationComponent,\n ReviewInstructionsDialogComponent,\n ],\n providers: [\n TranslocoLazyModuleUtils.getScopeProvider(\n 'tgo-immersive-test',\n getAvailableLangs(),\n ROOT_TRANSLATIONS_SCOPE,\n (lang: string) => {\n // Fetch from app assets; demo app copies the library assets to\n // /assets/tgo-immersive-test via project.json.\n const url = new URL(`assets/tgo-immersive-test/i18n/${lang}.json`, document.baseURI).href;\n return fetch(url).then(res => res.json());\n }\n ),\n DialogService,\n ThemeService,\n ],\n})\nexport class ImmersiveTestComponent implements OnInit, OnDestroy, IQuestionDataContract {\n @ViewChild('video') videoElement?: ElementRef<HTMLVideoElement>;\n @ViewChild('audio') audioElement?: ElementRef<HTMLAudioElement>;\n @Input({ required: true }) question!: Question;\n @Input({ required: true }) test!: TestResultRead;\n @Input() isFirstQuestion?: boolean;\n @Input() expirationObservable?: Observable<void>;\n @Input() selectedMediaDevices?: SelectedMediaDevices;\n @Input() mediaAccessChanged?: Observable<SelectedMediaDevices> | undefined;\n\n @Output() submissionStateChanged = new EventEmitter<ISubmissionState | null>();\n @Output() loadingStateChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() requestMediaAccess: EventEmitter<void> = new EventEmitter<void>();\n\n isAnswering = signal(false);\n isCountingDown = signal(false);\n isVideoPlaying = signal(false);\n isQuestionPlaying = signal(false);\n candidateVideoStreamReady = signal(false);\n translations: { [key: string]: string } = {};\n volume = signal(0);\n audioUrl = signal('');\n\n private unsubscribe$ = new Subject<void>();\n private mediaService = inject(MediaService);\n private translocoService = inject(TranslocoService);\n private dialog = inject(DialogService);\n private cdr = inject(ChangeDetectorRef);\n private themeService = inject(ThemeService);\n\n companyColor = this.themeService.getCompanyColor();\n\n get fileUrl(): string {\n const match = this.question?.text.match(/(src|href)=\"([^\"]*)\"/);\n return (match && match.pop()) || '';\n }\n\n get isVideo() {\n return this.fileUrl.includes('player.vimeo.com');\n }\n\n constructor(@Inject(TRANSLOCO_SCOPE) private translationScope: TranslocoScope) {}\n\n ngOnInit(): void {\n this.initExpirationSubscription();\n this.initMediaAccessSubscription();\n this.loadingStateChanged.emit(false);\n this.mediaService.setSelectedMediaDevices(this.selectedMediaDevices);\n void this.setTranslations();\n void this.initVideoStream();\n if (!this.isFirstQuestion) {\n void this.startQuestion();\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n stopRecording() {\n this.mediaService.stopRecording();\n }\n\n onVideoLoad() {\n this.candidateVideoStreamReady.set(true);\n }\n\n async startQuestion() {\n this.isQuestionPlaying.set(true);\n\n if (!this.isVideo) {\n await this.mediaService.playAudio(this.fileUrl);\n this.startCountdown();\n }\n }\n\n async startCountdown() {\n if (!(await this.mediaService.checkPermission({ audio: true, video: false }))) {\n this.requestMediaAccess.emit();\n return;\n }\n this.isCountingDown.set(true);\n this.isVideoPlaying.set(false);\n }\n\n startRecordAnswer() {\n this.isCountingDown.set(false);\n this.isAnswering.set(true);\n this.mediaService\n .recordAudio()\n .pipe(\n takeUntil(this.unsubscribe$),\n catchError(error => {\n console.error('Error recording answer', error);\n this.isAnswering.set(false);\n this.startCountdown();\n throw error;\n })\n )\n .subscribe(event => {\n if (event.type === 'complete') {\n if (!this.test.is_preview_mode) {\n this.submissionStateChanged.emit({ file: event.file, text: '' });\n this.isAnswering.set(false);\n this.loadingStateChanged.emit(true);\n } else {\n const url = window.URL.createObjectURL(event.file);\n this.audioUrl.set(url);\n if (this.audioElement) {\n this.audioElement.nativeElement.src = url;\n this.audioElement.nativeElement.play();\n }\n }\n } else {\n this.volume.set(event.value);\n }\n });\n }\n\n openReviewInstructionsDialog() {\n const dialogData: ReviewInstructionsDialogData = {\n backgroundInfoData: this.test.intro_text,\n instructionsInfoData: this.test.test_instruction,\n };\n this.dialog.open(ReviewInstructionsDialogComponent, {\n size: 'large',\n extraData: dialogData,\n });\n }\n\n private async initVideoStream() {\n try {\n const stream = await this.mediaService.getMediaStream({\n video: true,\n audio: false,\n });\n if (this.videoElement) {\n this.videoElement.nativeElement.srcObject = stream;\n await this.videoElement?.nativeElement.play();\n }\n } catch (error) {\n console.error('Error initializing video stream:', error);\n this.candidateVideoStreamReady.set(false);\n }\n }\n\n private async setTranslations() {\n this.translations = await firstValueFrom(\n this.translocoService.selectTranslateObject(`TEST`, {}, this.translationScope as string)\n );\n this.cdr.markForCheck();\n }\n\n private initExpirationSubscription() {\n this.expirationObservable?.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n if (!this.test?.is_preview_mode) {\n if (this.mediaService.isRecording()) {\n this.stopRecording();\n } else {\n this.submissionStateChanged.emit({ file: undefined, text: '' });\n }\n }\n });\n }\n\n private initMediaAccessSubscription() {\n this.mediaAccessChanged?.pipe(takeUntil(this.unsubscribe$)).subscribe(selectedMediaDevices => {\n this.mediaService.setSelectedMediaDevices(selectedMediaDevices);\n if (!this.isCountingDown()) {\n void this.startCountdown();\n }\n void this.initVideoStream();\n });\n }\n}\n","<div class=\"immersive-test\">\n <div class=\"test-container\">\n <div\n class=\"media-container\"\n [class.is-video-visible]=\"isQuestionPlaying() && !isAnswering()\"\n [class.is-playing]=\"isVideoPlaying()\"\n [class.is-answering]=\"isAnswering()\"\n >\n <div class=\"candidate-no-camera\" *ngIf=\"!candidateVideoStreamReady()\">\n <h3> </h3>\n <tgo-audio-animation\n *ngIf=\"isAnswering()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <ui-icon name=\"User-profile-in-line\" color=\"white\" size=\"24\"></ui-icon>\n <h3 class=\"bold\">{{ translations['YOU'] }}</h3>\n </div>\n <div class=\"candidate-camera\" [hidden]=\"!candidateVideoStreamReady()\">\n <tgo-audio-animation\n *ngIf=\"isAnswering() && candidateVideoStreamReady()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <video height #video id=\"video\" playsinline (loadedmetadata)=\"onVideoLoad()\"></video>\n <h3 class=\"bold\" *ngIf=\"candidateVideoStreamReady()\">\n {{ translations['YOU'] }}\n </h3>\n </div>\n <tgo-audio-animation *ngIf=\"isVideoPlaying()\" [fakeData]=\"true\"></tgo-audio-animation>\n <tgo-vimeo-video\n *ngIf=\"isVideo\"\n [isPlaying]=\"isQuestionPlaying()\"\n [videoUrl]=\"fileUrl\"\n (videoEnded)=\"startCountdown()\"\n (videoStarted)=\"isVideoPlaying.set(true)\"\n ></tgo-vimeo-video>\n <div class=\"audio-info\" *ngIf=\"isQuestionPlaying() && !isVideo\">\n <ui-icon name=\"User-profile-filled\" color=\"white\" size=\"80\"></ui-icon>\n </div>\n <div class=\"start\" *ngIf=\"isFirstQuestion && !isQuestionPlaying()\">\n <tgo-ringing-phone-animation [isRinging]=\"true\"></tgo-ringing-phone-animation>\n <ui-button\n [label]=\"translations['ANSWER']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"startQuestion()\"\n data-testid=\"immersive-test.start-question-btn\"\n ></ui-button>\n </div>\n <div class=\"overlay\" *ngIf=\"isAnswering() || isCountingDown()\" [@fadeInFadeOut]>\n <div class=\"answer\" *ngIf=\"!audioUrl() && isAnswering()\">\n <div>\n <h3 class=\"uppercase recording-started\">\n <span class=\"recording-dot\"></span>{{ translations['RECORDING_STARTED'] }}\n </h3>\n <h1 class=\"bold\">\n {{ translations['ANSWER_THE_QUESTION'] }}\n </h1>\n </div>\n <ui-button\n [label]=\"translations['ANSWER_COMPLETED']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"stopRecording()\"\n data-testid=\"immersive-test.stop-recording-btn\"\n ></ui-button>\n </div>\n <div class=\"answer\" *ngIf=\"isCountingDown()\">\n <div>\n <h1 class=\"bold\">\n {{ translations['GET_READY'] }}\n </h1>\n </div>\n <tgo-video-countdown (finished)=\"startRecordAnswer()\"></tgo-video-countdown>\n <div> </div>\n </div>\n <div class=\"preview\" [class.hidden]=\"!audioUrl()\" *ngIf=\"test.is_preview_mode\">\n <h4>{{ translations['AUDIO_READY'] }}</h4>\n <p>{{ translations['AUDIO_PREVIEW'] }}</p>\n <audio #audio controls></audio>\n </div>\n </div>\n </div>\n <div class=\"media-info\">\n <h3 class=\"bold\">{{ translations['CUSTOMER'] }}</h3>\n <ui-button\n [hidden]=\"!test.test_instruction && !test.intro_text\"\n class=\"review-button\"\n [label]=\"translations['REVIEW_INSTRUCTIONS']\"\n variant=\"secondary\"\n size=\"small\"\n (click)=\"openReviewInstructionsDialog()\"\n data-testid=\"immersive-test.review-instructions-btn\"\n ></ui-button>\n </div>\n </div>\n</div>\n","// Library-specific components only (shared components are bundled from packages/shared)\nexport * from './immersive-test/immersive-test.component';\nexport * from './review-instructions-dialog';\nexport * from './ringing-phone-animation';\nexport * from './video-countdown';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-immersive-test.mjs","sources":["../../../../packages/tgo-immersive-test/src/lib/components/video-countdown/video-countdown.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/video-countdown/video-countdown.component.html","../../../../packages/tgo-immersive-test/src/lib/components/ringing-phone-animation/ringing-phone-animation.sound.ts","../../../../packages/tgo-immersive-test/src/lib/components/ringing-phone-animation/ringing-phone-animation.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/ringing-phone-animation/ringing-phone-animation.component.html","../../../../packages/tgo-immersive-test/src/lib/services/index.ts","../../../../packages/tgo-immersive-test/src/lib/components/review-instructions-dialog/review-instructions-dialog.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/review-instructions-dialog/review-instructions-dialog.component.html","../../../../packages/tgo-immersive-test/src/lib/models/translations.ts","../../../../packages/tgo-immersive-test/src/lib/components/immersive-test/immersive-test.component.ts","../../../../packages/tgo-immersive-test/src/lib/components/immersive-test/immersive-test.component.html","../../../../packages/tgo-immersive-test/src/lib/components/index.ts","../../../../packages/tgo-immersive-test/src/testgorilla-tgo-immersive-test.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'tgo-video-countdown',\n templateUrl: './video-countdown.component.html',\n styleUrls: ['./video-countdown.component.scss'],\n animations: [\n trigger('zoomInOut', [\n transition(':enter', [\n style({ transform: 'scale(0)', opacity: 0 }),\n animate('300ms ease-out', style({ transform: 'scale(1.2)', opacity: 1 })),\n animate('100ms ease-in', style({ transform: 'scale(1)' })),\n ]),\n transition(':leave', [\n style({ opacity: 1 }),\n animate('100ms ease-out', style({ transform: 'scale(1.2)', opacity: 0.5 })),\n animate('200ms ease-in', style({ transform: 'scale(0)', opacity: 0 })),\n ]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class VideoCountdownComponent implements OnInit, OnDestroy {\n @Input() startFrom = 5;\n @Input() endAt = 0;\n @Input() interval = 1325;\n @Output() finished: EventEmitter<void> = new EventEmitter<void>();\n\n isActive = false;\n displayNum: { key: number; value: number } = {\n key: this.startFrom,\n value: this.startFrom,\n };\n timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.start();\n }\n\n start() {\n this.isActive = true;\n this.displayNum = { key: this.startFrom, value: this.startFrom };\n this.scheduleAnimation();\n }\n\n ngOnDestroy(): void {\n this.isActive = false;\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n }\n\n private scheduleAnimation() {\n this.timeoutId = setTimeout(() => {\n this.anim();\n }, this.interval);\n }\n\n private anim() {\n if (!this.isActive) {\n return;\n }\n\n this.updateNumber();\n this.cdr.markForCheck();\n\n if (this.displayNum && this.displayNum.value === this.endAt) {\n this.finished.emit();\n this.isActive = false;\n return;\n }\n\n this.scheduleAnimation();\n }\n\n private updateNumber() {\n if (this.displayNum && this.displayNum.value === this.endAt) {\n this.displayNum = { key: this.startFrom, value: this.startFrom - 1 };\n } else {\n this.displayNum = {\n key: this.displayNum.value - 1,\n value: this.displayNum.value - 1,\n };\n }\n }\n}\n","<div class=\"video-countdown\">\n <div\n class=\"video-countdown-element\"\n *ngFor=\"let num of [displayNum]\"\n @zoomInOut\n >\n {{ num.value }}\n </div>\n</div>\n\n","export const ringingPhoneSound = `data:audio/mp3;base64,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`;\n\n","import {\n Component,\n WritableSignal,\n signal,\n Input,\n SimpleChanges,\n OnChanges,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ringingPhoneSound } from './ringing-phone-animation.sound';\n\n@Component({\n selector: 'tgo-ringing-phone-animation',\n templateUrl: './ringing-phone-animation.component.html',\n styleUrls: ['./ringing-phone-animation.component.scss'],\n imports: [CommonModule]\n})\nexport class RingingPhoneAnimationComponent implements OnChanges, OnDestroy {\n @Input() isRinging = true;\n\n ringingSignal: WritableSignal<boolean> = signal(this.isRinging);\n audio: HTMLAudioElement = new Audio(ringingPhoneSound);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isRinging']) {\n this.ringingSignal.set(this.isRinging);\n\n if (this.isRinging) {\n this.startRinging();\n } else {\n this.stopRinging();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.stopRinging();\n }\n\n private stopRinging(): void {\n this.ringingSignal.set(false);\n this.audio.pause();\n this.audio.currentTime = 0;\n }\n\n private startRinging(): void {\n this.audio.loop = true;\n this.audio.volume = 0.15;\n void this.audio.play();\n }\n}\n\n","<div class=\"ringing-phone-animation-wrapper\">\n <section class=\"ringing-phone-animation-container\">\n <div class=\"ringing-effect\" *ngIf=\"ringingSignal()\">\n <div class=\"ringing-line first-line\"></div>\n <div class=\"ringing-line second-line\"></div>\n <div class=\"ringing-line third-line\"></div>\n </div>\n <svg width=\"76\" height=\"30\" viewBox=\"0 0 76 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.33348 28.5122L1.66681 21.0122C1.00014 20.3455 0.666809 19.5678 0.666809 18.6789C0.666809 17.79 1.00014 17.0122 1.66681 16.3455C6.5557 11.0678 12.1946 7.10943 18.5835 4.47054C24.9724 1.83165 31.4446 0.512207 38.0001 0.512207C44.5557 0.512207 51.014 1.83165 57.3751 4.47054C63.7363 7.10943 69.389 11.0678 74.3335 16.3455C75.0001 17.0122 75.3335 17.79 75.3335 18.6789C75.3335 19.5678 75.0001 20.3455 74.3335 21.0122L66.6668 28.5122C66.0557 29.1233 65.3474 29.4567 64.5418 29.5122C63.7363 29.5678 63.0001 29.3455 62.3335 28.8455L52.6668 21.5122C52.2224 21.1789 51.889 20.79 51.6668 20.3455C51.4446 19.9011 51.3335 19.4011 51.3335 18.8455V9.34554C49.2224 8.67888 47.0557 8.1511 44.8335 7.76221C42.6113 7.37332 40.3335 7.17887 38.0001 7.17887C35.6668 7.17887 33.389 7.37332 31.1668 7.76221C28.9446 8.1511 26.7779 8.67888 24.6668 9.34554V18.8455C24.6668 19.4011 24.5557 19.9011 24.3335 20.3455C24.1113 20.79 23.7779 21.1789 23.3335 21.5122L13.6668 28.8455C13.0001 29.3455 12.264 29.5678 11.4585 29.5122C10.6529 29.4567 9.94459 29.1233 9.33348 28.5122ZM18.0001 11.6789C16.389 12.5122 14.8335 13.4705 13.3335 14.5539C11.8335 15.6372 10.2779 16.8455 8.66681 18.1789L12.0001 21.5122L18.0001 16.8455V11.6789ZM58.0001 11.8455V16.8455L64.0001 21.5122L67.3335 18.3455C65.7224 16.9011 64.1668 15.6511 62.6668 14.5955C61.1668 13.54 59.6113 12.6233 58.0001 11.8455Z\"\n fill=\"white\"\n />\n </svg>\n </section>\n</div>\n\n","// Re-export shared services\nexport {\n MediaService,\n ThemeService,\n TranslocoLazyModuleUtils,\n getAvailableLangs,\n} from '@testgorilla/tgo-shared-lib';\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Inject,\n OnInit,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport {\n TRANSLOCO_SCOPE,\n TranslocoModule,\n TranslocoScope,\n TranslocoService,\n} from '@ngneat/transloco';\nimport { CardComponentModule } from '@testgorilla/tgo-ui/components/card';\nimport { DialogComponentModule } from '@testgorilla/tgo-ui/components/dialog';\nimport { QuillViewComponent } from 'ngx-quill';\nimport { firstValueFrom } from 'rxjs';\nimport { getAvailableLangs, TranslocoLazyModuleUtils } from '../../services';\n\nexport interface ReviewInstructionsDialogData {\n backgroundInfoData?: string;\n instructionsInfoData?: string;\n}\n\n@Component({\n selector: 'tgo-review-instructions-dialog',\n templateUrl: './review-instructions-dialog.component.html',\n styleUrls: ['./review-instructions-dialog.component.scss'],\n providers: [\n TranslocoLazyModuleUtils.getScopeProvider('tgo-immersive-test-review-instructions', getAvailableLangs(), 'INSTRUCTIONS_MODAL', (lang: string) => {\n // Fetch from app assets; demo app copies the library assets to\n // /assets/tgo-immersive-test via project.json.\n const url = new URL(`assets/tgo-immersive-test/i18n/${lang}.json`, document.baseURI).href;\n return fetch(url).then((res) => res.json());\n }),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslocoModule,\n DialogComponentModule,\n CardComponentModule,\n QuillViewComponent,\n ]\n})\nexport class ReviewInstructionsDialogComponent implements OnInit {\n translations: { [key: string]: string } = {};\n\n private translocoService = inject(TranslocoService);\n private cdr = inject(ChangeDetectorRef);\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public dialogData: ReviewInstructionsDialogData,\n @Inject(TRANSLOCO_SCOPE) private translationScope: TranslocoScope,\n private dialogRef: MatDialogRef<ReviewInstructionsDialogComponent>\n ) {}\n\n ngOnInit(): void {\n void this.setTranslations();\n }\n\n closeDialog(): void {\n this.dialogRef.close(false);\n }\n\n private async setTranslations(): Promise<void> {\n this.translations = await firstValueFrom(\n this.translocoService.selectTranslateObject(\n `INSTRUCTIONS_MODAL`,\n {},\n this.translationScope as string\n )\n );\n this.cdr.markForCheck();\n }\n}\n","<ng-container *transloco=\"let t\">\n <ui-dialog\n class=\"dialog-wrapper\"\n [title]=\"translations['TITLE']\"\n [secondaryButtonLabel]=\"translations['CLOSE']\"\n (secondaryButtonClickEvent)=\"closeDialog()\"\n >\n <section class=\"containers-section\">\n <div class=\"immersive-test-instructions-container\">\n <div\n class=\"background-information-container\"\n *ngIf=\"dialogData?.backgroundInfoData\"\n >\n <ui-card class=\"background-information-card\" variant=\"neutral\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.backgroundInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n\n <div\n class=\"inner-instructions-container\"\n *ngIf=\"dialogData?.instructionsInfoData\"\n >\n <ui-card class=\"instructions-card\" variant=\"educative\">\n <quill-view\n theme=\"snow\"\n [content]=\"dialogData?.instructionsInfoData\"\n class=\"content-container notranslate\"\n ></quill-view>\n </ui-card>\n </div>\n </div>\n </section>\n </ui-dialog>\n</ng-container>\n\n","// Re-export from shared\nexport { ROOT_TRANSLATIONS_SCOPE } from '@testgorilla/tgo-shared-lib';\n\n","import {\n AudioAnimationComponent,\n VimeoVideoComponent,\n Question,\n TestResultRead,\n SelectedMediaDevices,\n ISubmissionState,\n IQuestionDataContract,\n MediaService,\n ThemeService,\n TranslocoLazyModuleUtils,\n getAvailableLangs,\n} from '@testgorilla/tgo-shared-lib';\nimport { VideoCountdownComponent } from '../video-countdown';\nimport { RingingPhoneAnimationComponent } from '../ringing-phone-animation';\nimport {\n ReviewInstructionsDialogComponent,\n ReviewInstructionsDialogData,\n} from '../review-instructions-dialog';\nimport { ROOT_TRANSLATIONS_SCOPE } from '../../models/translations';\nimport { catchError, firstValueFrom, Observable, takeUntil } from 'rxjs';\nimport { transition, style, animate, trigger } from '@angular/animations';\nimport {\n ElementRef,\n OnDestroy,\n signal,\n ViewChild,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n OnInit,\n Inject,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { DialogService } from '@testgorilla/tgo-ui/components/dialog';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { CommonModule } from '@angular/common';\nimport {\n TRANSLOCO_SCOPE,\n TranslocoModule,\n TranslocoScope,\n TranslocoService,\n} from '@ngneat/transloco';\n\n@Component({\n selector: 'tgo-immersive-test',\n templateUrl: './immersive-test.component.html',\n styleUrl: './immersive-test.component.scss',\n animations: [\n trigger('fadeInFadeOut', [\n transition(':enter', [style({ opacity: 0 }), animate('600ms', style({ opacity: 1 }))]),\n transition(':leave', [animate('600ms', style({ opacity: 0 }))]),\n ]),\n ],\n imports: [\n TranslocoModule,\n ButtonComponentModule,\n IconComponentModule,\n CommonModule,\n VimeoVideoComponent,\n VideoCountdownComponent,\n RingingPhoneAnimationComponent,\n AudioAnimationComponent,\n ReviewInstructionsDialogComponent,\n ],\n providers: [\n TranslocoLazyModuleUtils.getScopeProvider(\n 'tgo-immersive-test',\n getAvailableLangs(),\n ROOT_TRANSLATIONS_SCOPE,\n (lang: string) => {\n // Fetch from app assets; demo app copies the library assets to\n // /assets/tgo-immersive-test via project.json.\n const url = new URL(`assets/tgo-immersive-test/i18n/${lang}.json`, document.baseURI).href;\n return fetch(url).then(res => res.json());\n }\n ),\n DialogService,\n ThemeService,\n ],\n})\nexport class ImmersiveTestComponent implements OnInit, OnDestroy, IQuestionDataContract {\n @ViewChild('video') videoElement?: ElementRef<HTMLVideoElement>;\n @ViewChild('audio') audioElement?: ElementRef<HTMLAudioElement>;\n @Input({ required: true }) question!: Question;\n @Input({ required: true }) test!: TestResultRead;\n @Input() isFirstQuestion?: boolean;\n @Input() expirationObservable?: Observable<void>;\n @Input() selectedMediaDevices?: SelectedMediaDevices;\n @Input() mediaAccessChanged?: Observable<SelectedMediaDevices> | undefined;\n\n @Output() submissionStateChanged = new EventEmitter<ISubmissionState | null>();\n @Output() loadingStateChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() requestMediaAccess: EventEmitter<void> = new EventEmitter<void>();\n\n isAnswering = signal(false);\n isCountingDown = signal(false);\n isVideoPlaying = signal(false);\n isQuestionPlaying = signal(false);\n candidateVideoStreamReady = signal(false);\n translations: { [key: string]: string } = {};\n volume = signal(0);\n audioUrl = signal('');\n\n private unsubscribe$ = new Subject<void>();\n private mediaService = inject(MediaService);\n private translocoService = inject(TranslocoService);\n private dialog = inject(DialogService);\n private cdr = inject(ChangeDetectorRef);\n private themeService = inject(ThemeService);\n\n companyColor = this.themeService.getCompanyColor();\n\n get fileUrl(): string {\n const match = this.question?.text.match(/(src|href)=\"([^\"]*)\"/);\n return (match && match.pop()) || '';\n }\n\n get isVideo() {\n return this.fileUrl.includes('player.vimeo.com');\n }\n\n constructor(@Inject(TRANSLOCO_SCOPE) private translationScope: TranslocoScope) {}\n\n ngOnInit(): void {\n this.initExpirationSubscription();\n this.initMediaAccessSubscription();\n this.loadingStateChanged.emit(false);\n this.mediaService.setSelectedMediaDevices(this.selectedMediaDevices);\n void this.setTranslations();\n void this.initVideoStream();\n if (!this.isFirstQuestion) {\n void this.startQuestion();\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n stopRecording() {\n this.mediaService.stopRecording();\n }\n\n onVideoLoad() {\n this.candidateVideoStreamReady.set(true);\n }\n\n async startQuestion() {\n this.isQuestionPlaying.set(true);\n\n if (!this.isVideo) {\n await this.mediaService.playAudio(this.fileUrl);\n this.startCountdown();\n }\n }\n\n async startCountdown() {\n if (!(await this.mediaService.checkPermission({ audio: true, video: false }))) {\n this.requestMediaAccess.emit();\n return;\n }\n this.isCountingDown.set(true);\n this.isVideoPlaying.set(false);\n }\n\n startRecordAnswer() {\n this.isCountingDown.set(false);\n this.isAnswering.set(true);\n this.mediaService\n .recordAudio()\n .pipe(\n takeUntil(this.unsubscribe$),\n catchError(error => {\n console.error('Error recording answer', error);\n this.isAnswering.set(false);\n this.startCountdown();\n throw error;\n })\n )\n .subscribe(event => {\n if (event.type === 'complete') {\n if (!this.test.is_preview_mode) {\n this.submissionStateChanged.emit({ file: event.file, text: '' });\n this.isAnswering.set(false);\n this.loadingStateChanged.emit(true);\n } else {\n const url = window.URL.createObjectURL(event.file);\n this.audioUrl.set(url);\n if (this.audioElement) {\n this.audioElement.nativeElement.src = url;\n this.audioElement.nativeElement.play();\n }\n }\n } else {\n this.volume.set(event.value);\n }\n });\n }\n\n openReviewInstructionsDialog() {\n const dialogData: ReviewInstructionsDialogData = {\n backgroundInfoData: this.test.intro_text,\n instructionsInfoData: this.test.test_instruction,\n };\n this.dialog.open(ReviewInstructionsDialogComponent, {\n size: 'large',\n extraData: dialogData,\n });\n }\n\n private async initVideoStream() {\n try {\n const stream = await this.mediaService.getMediaStream({\n video: true,\n audio: false,\n });\n if (this.videoElement) {\n this.videoElement.nativeElement.srcObject = stream;\n await this.videoElement?.nativeElement.play();\n }\n } catch (error) {\n console.error('Error initializing video stream:', error);\n this.candidateVideoStreamReady.set(false);\n }\n }\n\n private async setTranslations() {\n this.translations = await firstValueFrom(\n this.translocoService.selectTranslateObject(`TEST`, {}, this.translationScope as string)\n );\n this.cdr.markForCheck();\n }\n\n private initExpirationSubscription() {\n this.expirationObservable?.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n if (!this.test?.is_preview_mode) {\n if (this.mediaService.isRecording()) {\n this.stopRecording();\n } else {\n this.submissionStateChanged.emit({ file: undefined, text: '' });\n }\n }\n });\n }\n\n private initMediaAccessSubscription() {\n this.mediaAccessChanged?.pipe(takeUntil(this.unsubscribe$)).subscribe(selectedMediaDevices => {\n this.mediaService.setSelectedMediaDevices(selectedMediaDevices);\n if (!this.isCountingDown()) {\n void this.startCountdown();\n }\n void this.initVideoStream();\n });\n }\n}\n","<div class=\"immersive-test\">\n <div class=\"test-container\">\n <div\n class=\"media-container\"\n [class.is-video-visible]=\"isQuestionPlaying() && !isAnswering()\"\n [class.is-playing]=\"isVideoPlaying()\"\n [class.is-answering]=\"isAnswering()\"\n >\n <div class=\"candidate-no-camera\" *ngIf=\"!candidateVideoStreamReady()\">\n <h3> </h3>\n <tgo-audio-animation\n *ngIf=\"isAnswering()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <ui-icon name=\"User-profile-in-line\" color=\"white\" size=\"24\"></ui-icon>\n <h3 class=\"bold\">{{ translations['YOU'] }}</h3>\n </div>\n <div class=\"candidate-camera\" [hidden]=\"!candidateVideoStreamReady()\">\n <tgo-audio-animation\n *ngIf=\"isAnswering() && candidateVideoStreamReady()\"\n [volume]=\"volume()\"\n [fakeData]=\"false\"\n ></tgo-audio-animation>\n <video height #video id=\"video\" playsinline (loadedmetadata)=\"onVideoLoad()\"></video>\n <h3 class=\"bold\" *ngIf=\"candidateVideoStreamReady()\">\n {{ translations['YOU'] }}\n </h3>\n </div>\n <tgo-audio-animation *ngIf=\"isVideoPlaying()\" [fakeData]=\"true\"></tgo-audio-animation>\n <tgo-vimeo-video\n *ngIf=\"isVideo\"\n [isPlaying]=\"isQuestionPlaying()\"\n [videoUrl]=\"fileUrl\"\n (videoEnded)=\"startCountdown()\"\n (videoStarted)=\"isVideoPlaying.set(true)\"\n ></tgo-vimeo-video>\n <div class=\"audio-info\" *ngIf=\"isQuestionPlaying() && !isVideo\">\n <ui-icon name=\"User-profile-filled\" color=\"white\" size=\"80\"></ui-icon>\n </div>\n <div class=\"start\" *ngIf=\"isFirstQuestion && !isQuestionPlaying()\">\n <tgo-ringing-phone-animation [isRinging]=\"true\"></tgo-ringing-phone-animation>\n <ui-button\n [label]=\"translations['ANSWER']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"startQuestion()\"\n data-testid=\"immersive-test.start-question-btn\"\n ></ui-button>\n </div>\n <div class=\"overlay\" *ngIf=\"isAnswering() || isCountingDown()\" [@fadeInFadeOut]>\n <div class=\"answer\" *ngIf=\"!audioUrl() && isAnswering()\">\n <div>\n <h3 class=\"uppercase recording-started\">\n <span class=\"recording-dot\"></span>{{ translations['RECORDING_STARTED'] }}\n </h3>\n <h1 class=\"bold\">\n {{ translations['ANSWER_THE_QUESTION'] }}\n </h1>\n </div>\n <ui-button\n [label]=\"translations['ANSWER_COMPLETED']\"\n [class.white-btn]=\"test.is_preview_mode\"\n variant=\"primary\"\n [companyColor]=\"companyColor\"\n (click)=\"stopRecording()\"\n data-testid=\"immersive-test.stop-recording-btn\"\n ></ui-button>\n </div>\n <div class=\"answer\" *ngIf=\"isCountingDown()\">\n <div>\n <h1 class=\"bold\">\n {{ translations['GET_READY'] }}\n </h1>\n </div>\n <tgo-video-countdown (finished)=\"startRecordAnswer()\"></tgo-video-countdown>\n <div> </div>\n </div>\n <div class=\"preview\" [class.hidden]=\"!audioUrl()\" *ngIf=\"test.is_preview_mode\">\n <h4>{{ translations['AUDIO_READY'] }}</h4>\n <p>{{ translations['AUDIO_PREVIEW'] }}</p>\n <audio #audio controls></audio>\n </div>\n </div>\n </div>\n <div class=\"media-info\">\n <h3 class=\"bold\">{{ translations['CUSTOMER'] }}</h3>\n <ui-button\n [hidden]=\"!test.test_instruction && !test.intro_text\"\n class=\"review-button\"\n [label]=\"translations['REVIEW_INSTRUCTIONS']\"\n variant=\"secondary\"\n size=\"small\"\n (click)=\"openReviewInstructionsDialog()\"\n data-testid=\"immersive-test.review-instructions-btn\"\n ></ui-button>\n </div>\n </div>\n</div>\n","// Library-specific components only (shared components are bundled from packages/shared)\nexport * from './immersive-test/immersive-test.component';\nexport * from './review-instructions-dialog';\nexport * from './ringing-phone-animation';\nexport * from './video-countdown';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testgorilla/tgo-immersive-test",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">= 19.0.0 < 20.0.0",
|
|
6
6
|
"@angular/core": ">= 19.0.0 < 20.0.0",
|
|
7
7
|
"@angular/animations": ">= 19.0.0 < 20.0.0",
|
|
8
8
|
"@angular/material": ">= 19.0.0 < 20.0.0",
|
|
9
9
|
"@ngneat/transloco": ">= 4.0.0 < 5.0.0",
|
|
10
|
-
"@testgorilla/tgo-ui": ">=
|
|
10
|
+
"@testgorilla/tgo-ui": ">= 5.0.0 < 6.0.0",
|
|
11
11
|
"ngx-quill": ">= 27.0.0 < 28.0.0",
|
|
12
12
|
"rxjs": ">= 7.0.0 < 8.0.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@testgorilla/tgo-shared-lib": ">=
|
|
15
|
+
"@testgorilla/tgo-shared-lib": ">= 3.0.0 < 4.0.0",
|
|
16
16
|
"tslib": "^2.3.0"
|
|
17
17
|
},
|
|
18
18
|
"typings": "index.d.ts",
|