metag-sdk-ionic 1.2.7-native-0.13 → 1.2.7-native-0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/app/pages/id-vision/components/camara-video-selfie/camara-video-selfie.component.js +35 -12
- package/dist/src/app/pages/id-vision/components/camara-video-selfie/camara-video-selfie.component.js.map +1 -1
- package/dist/src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.d.ts +0 -9
- package/dist/src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.js +16 -24
- package/dist/src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.js.map +1 -1
- package/dist/src/app/pages/id-vision/components/native-video-selfie/index.d.ts +1 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/index.js +2 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/index.js.map +1 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.d.ts +48 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.js +429 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.js.map +1 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.spec.d.ts +1 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.spec.js +19 -0
- package/dist/src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.spec.js.map +1 -0
- package/package.json +1 -1
package/dist/src/app/pages/id-vision/components/camara-video-selfie/camara-video-selfie.component.js
CHANGED
|
@@ -76,8 +76,11 @@ export class CamaraVideoSelfieComponent {
|
|
|
76
76
|
}
|
|
77
77
|
await this.requestPermissions();
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
// Delay para asegurar que el DOM esté completamente listo
|
|
80
|
+
setTimeout(async () => {
|
|
81
|
+
await this.initCamera();
|
|
82
|
+
await this.waitForCameraReady();
|
|
83
|
+
}, 100);
|
|
81
84
|
this.modalDpiServices.closeModalAndChangeBrightness$.subscribe(async () => await this.closeOverlayVideo());
|
|
82
85
|
}
|
|
83
86
|
async ngOnDestroy() {
|
|
@@ -99,29 +102,49 @@ export class CamaraVideoSelfieComponent {
|
|
|
99
102
|
}
|
|
100
103
|
async initCamera() {
|
|
101
104
|
try {
|
|
105
|
+
console.log('🎥 Iniciando cámara para video selfie...');
|
|
106
|
+
if (!this.videoElement) {
|
|
107
|
+
console.error('❌ VideoElement no disponible');
|
|
108
|
+
this.isLoading = false;
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
102
111
|
const constraints = {
|
|
103
112
|
audio: true,
|
|
104
113
|
video: {
|
|
105
|
-
facingMode: 'user',
|
|
106
|
-
width: { ideal:
|
|
107
|
-
height: { ideal:
|
|
108
|
-
aspectRatio:
|
|
114
|
+
facingMode: 'user', // Cámara frontal
|
|
115
|
+
width: { ideal: 1280 },
|
|
116
|
+
height: { ideal: 720 },
|
|
117
|
+
aspectRatio: { ideal: 16 / 9 }
|
|
109
118
|
}
|
|
110
119
|
};
|
|
111
120
|
this.stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
121
|
+
console.log('✅ Stream obtenido:', this.stream.getTracks());
|
|
112
122
|
const video = this.videoElement.nativeElement;
|
|
113
123
|
video.srcObject = this.stream;
|
|
114
124
|
video.setAttribute('playsinline', 'true');
|
|
125
|
+
video.setAttribute('webkit-playsinline', 'true');
|
|
115
126
|
video.muted = true;
|
|
116
|
-
|
|
117
|
-
|
|
127
|
+
video.autoplay = true;
|
|
128
|
+
// Esperar a que el video cargue metadata
|
|
129
|
+
await new Promise((resolve) => {
|
|
130
|
+
video.onloadedmetadata = () => {
|
|
131
|
+
console.log('✅ Video metadata cargada, dimensiones:', video.videoWidth, 'x', video.videoHeight);
|
|
132
|
+
resolve();
|
|
133
|
+
};
|
|
134
|
+
// Timeout de seguridad
|
|
135
|
+
setTimeout(() => resolve(), 1000);
|
|
136
|
+
});
|
|
118
137
|
await video.play();
|
|
138
|
+
console.log('✅ Video reproduciendo');
|
|
119
139
|
this.isLoading = false;
|
|
140
|
+
// Forzar detección de cambios
|
|
141
|
+
this.changeDetector.detectChanges();
|
|
120
142
|
await this.prepareRecorder();
|
|
121
143
|
}
|
|
122
144
|
catch (error) {
|
|
123
|
-
console.error('initCamera error:', error);
|
|
145
|
+
console.error('❌ initCamera error:', error);
|
|
124
146
|
this.isLoading = false;
|
|
147
|
+
alert('Error al iniciar cámara: ' + error.message);
|
|
125
148
|
}
|
|
126
149
|
}
|
|
127
150
|
async waitForCameraReady() {
|
|
@@ -261,7 +284,7 @@ export class CamaraVideoSelfieComponent {
|
|
|
261
284
|
let _t;
|
|
262
285
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.videoElement = _t.first);
|
|
263
286
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.progressRing = _t.first);
|
|
264
|
-
} }, inputs: { text1: "text1", text2: "text2", backFunction: "backFunction" }, outputs: { closeRequested: "closeRequested" }, decls: 21, vars: 8, consts: [["videoElement", ""], ["progressRing", ""], ["color", "light", 1, "custom-content"], ["class", "countdown-overlay", 4, "ngIf"], [1, "ion-no-border"], ["color", "light"], ["slot", "end"], [3, "click", "disabled"], ["name", "close", "color", "dark"], [1, "camera-container"], [1, "video-wrapper"], ["muted", "", "autoplay", "", "playsinline", "", 2, "transform", "scaleX(-1)"], ["width", "300", "height", "300", 1, "progress-ring"], ["cx", "150", "cy", "150", "r", "150", 1, "progress-ring__circle"], [3, "ngClass"], [1, "text-center"], [1, "fixed-footer"], ["class", "button-grabar", "expand", "block", 3, "click", 4, "ngIf"], ["expand", "block", 3, "disabled", "click", 4, "ngIf"], [1, "countdown-overlay"], [1, "countdown"], ["expand", "block", 1, "button-grabar", 3, "click"], ["expand", "block", 3, "click", "disabled"]], template: function CamaraVideoSelfieComponent_Template(rf, ctx) { if (rf & 1) {
|
|
287
|
+
} }, inputs: { text1: "text1", text2: "text2", backFunction: "backFunction" }, outputs: { closeRequested: "closeRequested" }, decls: 21, vars: 8, consts: [["videoElement", ""], ["progressRing", ""], ["color", "light", 1, "custom-content"], ["class", "countdown-overlay", 4, "ngIf"], [1, "ion-no-border"], ["color", "light"], ["slot", "end"], [3, "click", "disabled"], ["name", "close", "color", "dark"], [1, "camera-container"], [1, "video-wrapper"], ["muted", "", "autoplay", "", "playsinline", "", "webkit-playsinline", "", 2, "transform", "scaleX(-1)", "width", "100%", "height", "100%", "object-fit", "cover"], ["width", "300", "height", "300", 1, "progress-ring"], ["cx", "150", "cy", "150", "r", "150", 1, "progress-ring__circle"], [3, "ngClass"], [1, "text-center"], [1, "fixed-footer"], ["class", "button-grabar", "expand", "block", 3, "click", 4, "ngIf"], ["expand", "block", 3, "disabled", "click", 4, "ngIf"], [1, "countdown-overlay"], [1, "countdown"], ["expand", "block", 1, "button-grabar", 3, "click"], ["expand", "block", 3, "click", "disabled"]], template: function CamaraVideoSelfieComponent_Template(rf, ctx) { if (rf & 1) {
|
|
265
288
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
266
289
|
i0.ɵɵelementStart(0, "ion-content", 2);
|
|
267
290
|
i0.ɵɵtemplate(1, CamaraVideoSelfieComponent_div_1_Template, 3, 1, "div", 3);
|
|
@@ -298,11 +321,11 @@ export class CamaraVideoSelfieComponent {
|
|
|
298
321
|
i0.ɵɵproperty("ngIf", !ctx.isRecording);
|
|
299
322
|
i0.ɵɵadvance();
|
|
300
323
|
i0.ɵɵproperty("ngIf", ctx.isRecording);
|
|
301
|
-
} }, dependencies: [i5.NgClass, i5.NgIf, i1.IonButton, i1.IonButtons, i1.IonContent, i1.IonHeader, i1.IonIcon, i1.IonLabel, i1.IonToolbar], styles: [".camera-container[_ngcontent-%COMP%] {\r\n justify-content: center;\r\n align-items: center;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 70%;\r\n background-color: #fff;\r\n}\r\n\r\n.video-wrapper[_ngcontent-%COMP%] {\r\n position: relative;\r\n width: 300px;\r\n height: 300px;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n}\r\n\r\nvideo[_ngcontent-%COMP%] {\r\n width: 100
|
|
324
|
+
} }, dependencies: [i5.NgClass, i5.NgIf, i1.IonButton, i1.IonButtons, i1.IonContent, i1.IonHeader, i1.IonIcon, i1.IonLabel, i1.IonToolbar], styles: [".camera-container[_ngcontent-%COMP%] {\r\n justify-content: center;\r\n align-items: center;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 70%;\r\n background-color: #fff;\r\n}\r\n\r\n.video-wrapper[_ngcontent-%COMP%] {\r\n position: relative;\r\n width: 300px;\r\n height: 300px;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n background: #000; \n\r\n}\r\n\r\nvideo[_ngcontent-%COMP%] {\r\n width: 100% !important;\r\n height: 100% !important;\r\n object-fit: cover;\r\n border-radius: 50%;\r\n display: block; \n\r\n background: #000;\r\n}\r\n\r\n.progress-ring[_ngcontent-%COMP%] {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n transform: rotate(-90deg);\r\n \n\r\n}\r\n\r\n.progress-ring__circle[_ngcontent-%COMP%] {\r\n fill: transparent;\r\n stroke: purple;\r\n stroke-width: 12;\r\n stroke-dasharray: 945;\r\n \n\r\n stroke-dashoffset: 880;\r\n \n\r\n transition: stroke-dashoffset 12s linear;\r\n \n\r\n}\r\n\r\n.progress-active[_ngcontent-%COMP%] .progress-ring__circle[_ngcontent-%COMP%] {\r\n animation: _ngcontent-%COMP%_progress-animation 5s linear forwards;\r\n}\r\n\r\n@keyframes _ngcontent-%COMP%_progress-animation {\r\n from {\r\n stroke-dashoffset: 880;\r\n }\r\n\r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n}\r\n\r\n.text-container[_ngcontent-%COMP%] {\r\n height: 40px;\r\n color: black;\r\n}\r\n\r\nion-header[_ngcontent-%COMP%] {\r\n --background: #fff;\r\n \n\r\n}\r\n\r\n.centered-title[_ngcontent-%COMP%] {\r\n text-align: center;\r\n width: 100%;\r\n \n\r\n font-weight: bold;\r\n}\r\n\r\n.fixed-footer[_ngcontent-%COMP%] {\r\n position: fixed;\r\n bottom: 40px;\r\n left: 0;\r\n width: 100%;\r\n padding: 10px;\r\n background-color: #fff; // Color de fondo, opcional\r\n // box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);\r\n\r\n\r\n ion-button {\r\n width: 90%;\r\n max-width: 300px;\r\n margin: 0 auto;\r\n color: #fff;\r\n font-weight: bold;\r\n border-radius: 20px;\r\n\r\n --background: #82298F;\r\n --background-hover: #82298F;\r\n --background-activated: #82298F;\r\n --background-focused: #82298F;\r\n\r\n --color: #fff;\r\n\r\n --border-radius: 20px;\r\n --border-color: #82298F;\r\n ;\r\n --border-style: solid;\r\n --border-width: 1px;\r\n\r\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\r\n\r\n --ripple-color: #82298F;\r\n\r\n\r\n &:hover {\r\n background-color: #82298F;\r\n }\r\n\r\n &:active {\r\n background-color: #82298F;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\nion-header[_ngcontent-%COMP%] {\r\n --background: #fff;\r\n \n\r\n color: #000000;\r\n \n\r\n}\r\n\r\nion-toolbar[_ngcontent-%COMP%] {\r\n --ion-background-color: #fff !important;\r\n --background: #ffffff !important;\r\n --color: #000000 !important;\r\n}\r\n\r\n.centered-title[_ngcontent-%COMP%] {\r\n flex: 1;\r\n text-align: center;\r\n \n\r\n font-weight: bold;\r\n color: #000000;\r\n margin: 0;\r\n \n\r\n}\r\n\r\nion-buttons[_ngcontent-%COMP%] {\r\n justify-content: flex-end;\r\n \n\r\n}\r\n\r\n.countdown-overlay[_ngcontent-%COMP%] {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, 0.6);\r\n \n\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 0;\r\n padding: 0;\r\n z-index: 1000;\r\n \n\r\n animation: _ngcontent-%COMP%_fadeIn 0.5s ease-out, _ngcontent-%COMP%_fadeOut 0.5s ease-out 2.5s;\r\n \n\r\n box-sizing: border-box;\r\n border-radius: 0px;\r\n\r\n}\r\n\r\nion-content.custom-content[_ngcontent-%COMP%] {\r\n --padding-top: 0;\r\n --padding-bottom: 0;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\n.countdown[_ngcontent-%COMP%] {\r\n font-size: 100px;\r\n font-weight: bold;\r\n color: #fff;\r\n animation: _ngcontent-%COMP%_scaleUp 0.5s ease-out, _ngcontent-%COMP%_scaleDown 0.5s ease-out 2.5s;\r\n \n\r\n}\r\n\r\n\n\r\n@keyframes _ngcontent-%COMP%_fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes _ngcontent-%COMP%_fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n\n\r\n@keyframes _ngcontent-%COMP%_scaleUp {\r\n from {\r\n transform: scale(0.8);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes _ngcontent-%COMP%_scaleDown {\r\n from {\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n transform: scale(0.8);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.red[_ngcontent-%COMP%] {\r\n padding: 10px;\r\n color: red;\r\n}\r\n\r\n.text-center[_ngcontent-%COMP%] {\r\n text-align: center;\r\n padding-left: 20%;\r\n padding-right: 20%;\r\n color: #333;\r\n}\r\n\r\n.loading-overlay[_ngcontent-%COMP%] {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, 0.8);\r\n \n\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n \n\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n border-radius: 0px;\r\n}\r\n\r\nion-spinner[_ngcontent-%COMP%] {\r\n color: #fff;\r\n width: 50px;\r\n height: 50px;\r\n}"] }); }
|
|
302
325
|
}
|
|
303
326
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CamaraVideoSelfieComponent, [{
|
|
304
327
|
type: Component,
|
|
305
|
-
args: [{ selector: 'app-camara-video-selfie', encapsulation: ViewEncapsulation.Emulated, template: "<ion-content color=\"light\" class=\"custom-content\">\r\n <!-- Loading deshabilitado para evitar conflictos con loading principal -->\r\n <!-- <div *ngIf=\"isLoading\" class=\"loading-overlay\">\r\n <ion-spinner name=\"crescent\"></ion-spinner>\r\n </div> --> \r\n <div *ngIf=\"countdown > 0\" class=\"countdown-overlay\">\r\n <div class=\"countdown\">{{ countdown }}</div>\r\n </div>\r\n <ion-header class=\"ion-no-border\">\r\n <ion-toolbar color=\"light\">\r\n <!-- <ion-title class=\"centered-title\">Video Selfie</ion-title> -->\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"closeOverlayVideo()\" [disabled]=\"!canStopRecording\">\r\n <ion-icon name=\"close\" color=\"dark\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n <!-- Contenedor de la c\u00E1mara y progresi\u00F3n -->\r\n <div class=\"camera-container\">\r\n <div class=\"video-wrapper\">\r\n <video #videoElement muted autoplay playsinline style=\"transform: scaleX(-1)
|
|
328
|
+
args: [{ selector: 'app-camara-video-selfie', encapsulation: ViewEncapsulation.Emulated, template: "<ion-content color=\"light\" class=\"custom-content\">\r\n <!-- Loading deshabilitado para evitar conflictos con loading principal -->\r\n <!-- <div *ngIf=\"isLoading\" class=\"loading-overlay\">\r\n <ion-spinner name=\"crescent\"></ion-spinner>\r\n </div> --> \r\n <div *ngIf=\"countdown > 0\" class=\"countdown-overlay\">\r\n <div class=\"countdown\">{{ countdown }}</div>\r\n </div>\r\n <ion-header class=\"ion-no-border\">\r\n <ion-toolbar color=\"light\">\r\n <!-- <ion-title class=\"centered-title\">Video Selfie</ion-title> -->\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"closeOverlayVideo()\" [disabled]=\"!canStopRecording\">\r\n <ion-icon name=\"close\" color=\"dark\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n <!-- Contenedor de la c\u00E1mara y progresi\u00F3n -->\r\n <div class=\"camera-container\">\r\n <div class=\"video-wrapper\">\r\n <video #videoElement \r\n muted \r\n autoplay \r\n playsinline \r\n webkit-playsinline\r\n style=\"transform: scaleX(-1); width: 100%; height: 100%; object-fit: cover;\"></video>\r\n <svg class=\"progress-ring\" #progressRing width=\"300\" height=\"300\">\r\n <circle class=\"progress-ring__circle\" cx=\"150\" cy=\"150\" r=\"150\" />\r\n </svg>\r\n </div>\r\n <ion-label [ngClass]=\"{'red': isRecording}\">00:{{ timeRemaining < 10 ? '0' + timeRemaining : timeRemaining\r\n }}</ion-label>\r\n <p class=\"text-center\">Permanece quieto, con tu rostro en el centro del c\u00EDrculo.</p>\r\n <!-- Botones de grabaci\u00F3n -->\r\n <div class=\"fixed-footer\">\r\n <ion-button class=\"button-grabar\" *ngIf=\"!isRecording\" expand=\"block\" (click)=\"recordVideo()\">Iniciar Grabaci\u00F3n</ion-button>\r\n <ion-button *ngIf=\"isRecording\" expand=\"block\" (click)=\"stopRecording()\" [disabled]=\"!canStopRecording\">Detener\r\n Grabaci\u00F3n</ion-button>\r\n </div>\r\n </div>\r\n</ion-content>", styles: [".camera-container {\r\n justify-content: center;\r\n align-items: center;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 70%;\r\n background-color: #fff;\r\n}\r\n\r\n.video-wrapper {\r\n position: relative;\r\n width: 300px;\r\n height: 300px;\r\n border-radius: 50%;\r\n overflow: hidden;\r\n background: #000; /* Fondo negro mientras carga */\r\n}\r\n\r\nvideo {\r\n width: 100% !important;\r\n height: 100% !important;\r\n object-fit: cover;\r\n border-radius: 50%;\r\n display: block; /* Eliminar espacios en blanco */\r\n background: #000;\r\n}\r\n\r\n.progress-ring {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n transform: rotate(-90deg);\r\n /* Rotamos el c\u00EDrculo para que la animaci\u00F3n inicie desde arriba */\r\n}\r\n\r\n.progress-ring__circle {\r\n fill: transparent;\r\n stroke: purple;\r\n stroke-width: 12;\r\n stroke-dasharray: 945;\r\n /* La circunferencia del c\u00EDrculo 880*/\r\n stroke-dashoffset: 880;\r\n /* Oculto por completo al inicio */\r\n transition: stroke-dashoffset 12s linear;\r\n /* Esto controlar\u00E1 el llenado progresivo */\r\n}\r\n\r\n.progress-active .progress-ring__circle {\r\n animation: progress-animation 5s linear forwards;\r\n}\r\n\r\n@keyframes progress-animation {\r\n from {\r\n stroke-dashoffset: 880;\r\n }\r\n\r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n}\r\n\r\n.text-container {\r\n height: 40px;\r\n color: black;\r\n}\r\n\r\nion-header {\r\n --background: #fff;\r\n /* Fondo blanco para el header */\r\n}\r\n\r\n.centered-title {\r\n text-align: center;\r\n width: 100%;\r\n /* Asegura que el t\u00EDtulo est\u00E9 centrado */\r\n font-weight: bold;\r\n}\r\n\r\n.fixed-footer {\r\n position: fixed;\r\n bottom: 40px;\r\n left: 0;\r\n width: 100%;\r\n padding: 10px;\r\n background-color: #fff; // Color de fondo, opcional\r\n // box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);\r\n\r\n\r\n ion-button {\r\n width: 90%;\r\n max-width: 300px;\r\n margin: 0 auto;\r\n color: #fff;\r\n font-weight: bold;\r\n border-radius: 20px;\r\n\r\n --background: #82298F;\r\n --background-hover: #82298F;\r\n --background-activated: #82298F;\r\n --background-focused: #82298F;\r\n\r\n --color: #fff;\r\n\r\n --border-radius: 20px;\r\n --border-color: #82298F;\r\n ;\r\n --border-style: solid;\r\n --border-width: 1px;\r\n\r\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\r\n\r\n --ripple-color: #82298F;\r\n\r\n\r\n &:hover {\r\n background-color: #82298F;\r\n }\r\n\r\n &:active {\r\n background-color: #82298F;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\nion-header {\r\n --background: #fff;\r\n /* Fondo blanco */\r\n color: #000000;\r\n /* Texto negro */\r\n}\r\n\r\nion-toolbar {\r\n --ion-background-color: #fff !important;\r\n --background: #ffffff !important;\r\n --color: #000000 !important;\r\n}\r\n\r\n.centered-title {\r\n flex: 1;\r\n text-align: center;\r\n /* Centrar el t\u00EDtulo */\r\n font-weight: bold;\r\n color: #000000;\r\n margin: 0;\r\n /* Quita cualquier margen del t\u00EDtulo */\r\n}\r\n\r\nion-buttons {\r\n justify-content: flex-end;\r\n /* Alinea el bot\u00F3n a la derecha */\r\n}\r\n\r\n.countdown-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, 0.6);\r\n /* Fondo semi-transparente */\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 0;\r\n padding: 0;\r\n z-index: 1000;\r\n /* Asegurarse de que est\u00E9 encima de otros elementos */\r\n animation: fadeIn 0.5s ease-out, fadeOut 0.5s ease-out 2.5s;\r\n /* Animaciones de entrada y salida */\r\n box-sizing: border-box;\r\n border-radius: 0px;\r\n\r\n}\r\n\r\nion-content.custom-content {\r\n --padding-top: 0;\r\n --padding-bottom: 0;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\n.countdown {\r\n font-size: 100px;\r\n font-weight: bold;\r\n color: #fff;\r\n animation: scaleUp 0.5s ease-out, scaleDown 0.5s ease-out 2.5s;\r\n /* Escalar en entrada y salida */\r\n}\r\n\r\n/* Animaci\u00F3n para desvanecer la superposici\u00F3n */\r\n@keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n opacity: 0;\r\n }\r\n}\r\n\r\n/* Animaci\u00F3n para escalar el n\u00FAmero */\r\n@keyframes scaleUp {\r\n from {\r\n transform: scale(0.8);\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes scaleDown {\r\n from {\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n\r\n to {\r\n transform: scale(0.8);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.red {\r\n padding: 10px;\r\n color: red;\r\n}\r\n\r\n.text-center {\r\n text-align: center;\r\n padding-left: 20%;\r\n padding-right: 20%;\r\n color: #333;\r\n}\r\n\r\n.loading-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, 0.8);\r\n /* Fondo oscuro semi-transparente */\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n /* Aseg\u00FArate de que est\u00E9 por encima del contenido */\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n border-radius: 0px;\r\n}\r\n\r\nion-spinner {\r\n color: #fff;\r\n width: 50px;\r\n height: 50px;\r\n}"] }]
|
|
306
329
|
}], () => [{ type: i1.Platform }, { type: i1.ModalController }, { type: i2.DomSanitizer }, { type: i0.Renderer2 }, { type: i1.AlertController }, { type: i0.ChangeDetectorRef }, { type: i3.ModalVideoSelfieServices }, { type: i4.ModalDpiServices }], { videoElement: [{
|
|
307
330
|
type: ViewChild,
|
|
308
331
|
args: ['videoElement']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camara-video-selfie.component.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/components/camara-video-selfie/camara-video-selfie.component.ts","../../../../../../../src/app/pages/id-vision/components/camara-video-selfie/camara-video-selfie.component.html"],"names":[],"mappings":"AAAA,OAAO,EAC6B,SAAS,EAAc,YAAY,EACrE,KAAK,EAAa,MAAM,EAAa,SAAS,EAAE,iBAAiB,EAClE,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;;;;;;;;;;;ICJxC,AADF,+BAAqD,cAC5B;IAAA,YAAe;IACxC,AADwC,iBAAM,EACxC;;;IADmB,eAAe;IAAf,sCAAe;;;;
|
|
1
|
+
{"version":3,"file":"camara-video-selfie.component.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/components/camara-video-selfie/camara-video-selfie.component.ts","../../../../../../../src/app/pages/id-vision/components/camara-video-selfie/camara-video-selfie.component.html"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,6 @@ import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/cor
|
|
|
2
2
|
import { ModalController, Platform } from '@ionic/angular';
|
|
3
3
|
import { ModalDpiServices } from '../../services/modal-services/modal-dpi-services';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
interface CamInfo {
|
|
6
|
-
label: string;
|
|
7
|
-
deviceId: string;
|
|
8
|
-
}
|
|
9
5
|
export declare class CameraWithOverlayComponent implements AfterViewInit, OnDestroy {
|
|
10
6
|
private platform;
|
|
11
7
|
private modalController;
|
|
@@ -18,9 +14,7 @@ export declare class CameraWithOverlayComponent implements AfterViewInit, OnDest
|
|
|
18
14
|
closeRequested: EventEmitter<void>;
|
|
19
15
|
stream: MediaStream | null;
|
|
20
16
|
isLoading: boolean;
|
|
21
|
-
rearCams: CamInfo[];
|
|
22
17
|
selectedCamId: string | null;
|
|
23
|
-
currentRearIndex: number;
|
|
24
18
|
private readonly isMobile;
|
|
25
19
|
constructor(platform: Platform, modalController: ModalController, modaldpiServices: ModalDpiServices);
|
|
26
20
|
ngAfterViewInit(): Promise<void>;
|
|
@@ -28,8 +22,6 @@ export declare class CameraWithOverlayComponent implements AfterViewInit, OnDest
|
|
|
28
22
|
private requestPermissions;
|
|
29
23
|
private enumerateRearCams;
|
|
30
24
|
openCamera(deviceId?: string): Promise<void>;
|
|
31
|
-
/** Avanza al siguiente sensor trasero en modo carrusel */
|
|
32
|
-
toggleRearCam(): void;
|
|
33
25
|
private attachStream;
|
|
34
26
|
capturePhoto(): Promise<void>;
|
|
35
27
|
blobToFile(blob: Blob, fileName: string): File;
|
|
@@ -39,4 +31,3 @@ export declare class CameraWithOverlayComponent implements AfterViewInit, OnDest
|
|
|
39
31
|
static ɵfac: i0.ɵɵFactoryDeclaration<CameraWithOverlayComponent, never>;
|
|
40
32
|
static ɵcmp: i0.ɵɵComponentDeclaration<CameraWithOverlayComponent, "app-camera-overlay", never, { "text1": { "alias": "text1"; "required": false; }; "text2": { "alias": "text2"; "required": false; }; "overlaySrc": { "alias": "overlaySrc"; "required": false; }; "onTakePicture": { "alias": "onTakePicture"; "required": false; }; }, { "closeRequested": "closeRequested"; }, never, never, false, never>;
|
|
41
33
|
}
|
|
42
|
-
export {};
|
package/dist/src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.js
CHANGED
|
@@ -18,9 +18,7 @@ export class CameraWithOverlayComponent {
|
|
|
18
18
|
/* ─── Estado ─── */
|
|
19
19
|
this.stream = null;
|
|
20
20
|
this.isLoading = true;
|
|
21
|
-
this.rearCams = [];
|
|
22
21
|
this.selectedCamId = null;
|
|
23
|
-
this.currentRearIndex = 0; // ← índice de la lente trasera activa
|
|
24
22
|
this.isMobile = this.platform.is('android') || this.platform.is('ios');
|
|
25
23
|
}
|
|
26
24
|
/* ═════════ LIFE-CYCLE ═════════ */
|
|
@@ -57,29 +55,31 @@ export class CameraWithOverlayComponent {
|
|
|
57
55
|
}
|
|
58
56
|
catch { /* ignorar */ }
|
|
59
57
|
}
|
|
60
|
-
|
|
58
|
+
// Buscar la primera cámara trasera disponible
|
|
59
|
+
let rearCams = devices
|
|
61
60
|
.filter(d => /back|rear|environment/i.test(d.label))
|
|
62
61
|
.map((d, i) => ({ label: d.label || `Cámara trasera ${i + 1}`, deviceId: d.deviceId }));
|
|
63
|
-
if (!
|
|
62
|
+
if (!rearCams.length && devices.length > 1) {
|
|
64
63
|
/* plan B – todo menos la primera (suele ser frontal) */
|
|
65
|
-
|
|
64
|
+
rearCams = devices.slice(1).map((d, i) => ({
|
|
66
65
|
label: d.label || `Cámara ${i + 1}`,
|
|
67
66
|
deviceId: d.deviceId
|
|
68
67
|
}));
|
|
69
68
|
}
|
|
70
69
|
/* ─── Elegir la cámara por defecto ─── */
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
let selectedDevice = null;
|
|
71
|
+
if (rearCams.length) {
|
|
72
|
+
let preferred = rearCams.find(c => /camera2\s?0/i.test(c.label)); // 1) "camera2 0…"
|
|
73
73
|
if (!preferred)
|
|
74
|
-
preferred =
|
|
75
|
-
|
|
76
|
-
this.selectedCamId = chosen.deviceId;
|
|
77
|
-
this.currentRearIndex = this.rearCams.findIndex(c => c.deviceId === chosen.deviceId);
|
|
78
|
-
await this.openCamera(this.selectedCamId);
|
|
74
|
+
preferred = rearCams.find(c => /back/i.test(c.label)); // 2) cualquier "back"
|
|
75
|
+
selectedDevice = preferred ?? rearCams[0]; // 3) primera
|
|
79
76
|
}
|
|
80
77
|
else if (devices.length) {
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
selectedDevice = devices[0];
|
|
79
|
+
}
|
|
80
|
+
if (selectedDevice) {
|
|
81
|
+
this.selectedCamId = selectedDevice.deviceId;
|
|
82
|
+
await this.openCamera(this.selectedCamId);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
/* ═════════ Abrir / cambiar cámara ═════════ */
|
|
@@ -104,15 +104,7 @@ export class CameraWithOverlayComponent {
|
|
|
104
104
|
console.error('No se pudo abrir la cámara:', err);
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
|
|
108
|
-
toggleRearCam() {
|
|
109
|
-
if (!this.rearCams.length)
|
|
110
|
-
return;
|
|
111
|
-
this.currentRearIndex = (this.currentRearIndex + 1) % this.rearCams.length;
|
|
112
|
-
const nextCam = this.rearCams[this.currentRearIndex];
|
|
113
|
-
this.selectedCamId = nextCam.deviceId;
|
|
114
|
-
this.openCamera(nextCam.deviceId);
|
|
115
|
-
}
|
|
107
|
+
// Cambio de cámara deshabilitado - solo se permite usar la cámara trasera
|
|
116
108
|
attachStream(stream) {
|
|
117
109
|
const video = this.videoElement.nativeElement;
|
|
118
110
|
video.srcObject = stream;
|
|
@@ -224,7 +216,7 @@ export class CameraWithOverlayComponent {
|
|
|
224
216
|
}
|
|
225
217
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CameraWithOverlayComponent, [{
|
|
226
218
|
type: Component,
|
|
227
|
-
args: [{ selector: 'app-camera-overlay', encapsulation: ViewEncapsulation.Emulated, template: "<ion-content color=\"dark\">\r\n <div class=\"camera-overlay\">\r\n <!--
|
|
219
|
+
args: [{ selector: 'app-camera-overlay', encapsulation: ViewEncapsulation.Emulated, template: "<ion-content color=\"dark\">\r\n <div class=\"camera-overlay\">\r\n <!-- \u25B8 Encabezado ---------------------------------------------------- -->\r\n <div class=\"header-text\">\r\n <div class=\"text-help\">\r\n <p>{{ text1 }}</p>\r\n </div>\r\n <p class=\"country\">{{ text2 }}</p>\r\n </div> \r\n\r\n <!-- \u25B8 Loader deshabilitado para evitar conflictos con loading principal -->\r\n <!-- <div *ngIf=\"isLoading\" class=\"loading-overlay\">\r\n <ion-spinner name=\"crescent\"></ion-spinner>\r\n </div> -->\r\n\r\n <!-- \u25B8 Capa oscura con recorte (tu ventana de enfoque) --------------- -->\r\n <div class=\"visible-window\"></div>\r\n\r\n <!-- \u25B8 Contenedor del v\u00EDdeo + overlay -------------------------------- -->\r\n <div class=\"camera-container\">\r\n <video #videoElement autoplay muted playsinline></video>\r\n <img [src]=\"overlaySrc\" alt=\"Overlay\" class=\"overlay-frame blink-image\" />\r\n </div>\r\n\r\n <!-- \u25B8 Bot\u00F3n de captura ---------------------------------------------- -->\r\n <div class=\"button-container\">\r\n <ion-button (click)=\"capturePhoto()\"\r\n class=\"capture-button\"\r\n shape=\"round\"\r\n expand=\"block\">\r\n <ion-icon name=\"camera-outline\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n\r\n <!-- \u25B8 Bot\u00F3n de cerrar ------------------------------------------------ -->\r\n <ion-button fill=\"clear\"\r\n (click)=\"closeOverlay()\"\r\n class=\"close-button\">\r\n <ion-icon name=\"close-outline\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n</ion-content>\r\n", styles: ["ion-content {\r\n --background: black;\r\n padding: 0;\r\n margin: 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100vh;\r\n\r\n}\r\n\r\n\r\n.blink-image {\r\n animation: blink 3s infinite;\r\n}\r\n\r\n@keyframes blink {\r\n 0% { opacity: 1; }\r\n 50% { opacity: 0; }\r\n 100% { opacity: 1; }\r\n}\r\n\r\n.modal-container {\r\n max-width: 400px; // Ajusta el valor seg\u00FAn tus necesidades\r\n\r\n}\r\n\r\n.camera-overlay {\r\n position: relative;\r\n width: 100vw;\r\n height: 100vh;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n overflow: hidden;\r\n}\r\n\r\n.camera-container {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n\r\n video {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n}\r\n\r\n.overlay-frame {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n max-width: 86%;\r\n max-height: 90%;\r\n z-index: 9;\r\n}\r\n\r\n.header-text {\r\n position: absolute;\r\n top: 50px;\r\n width: 100%;\r\n text-align: center;\r\n color: white;\r\n z-index: 15;\r\n\r\n p {\r\n margin: 0;\r\n font-size: 18px;\r\n }\r\n\r\n .country {\r\n font-weight: bold;\r\n }\r\n}\r\n\r\n.button-container {\r\n position: absolute;\r\n bottom: 20px;\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n z-index: 10;\r\n}\r\n\r\n.capture-button {\r\n width: 70px;\r\n height: 70px;\r\n border-radius: 50%;\r\n\r\n\r\n --background: var(--purple-primary);\r\n --background-hover: var(--purple-secondary);\r\n --background-activated: var(--purple-secondary);\r\n --background-focused: var(--purple-secondary);\r\n \r\n --color: white;\r\n \r\n --border-color: var(--purple-primary);\r\n --border-style: solid;\r\n --border-width: 1px;\r\n \r\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\r\n \r\n --ripple-color: var(--purple-secondary);\r\n}\r\n\r\n.close-button {\r\n position: absolute;\r\n top: 14px;\r\n right: 20px;\r\n color: white;\r\n z-index: 10;\r\n}\r\n\r\n.visible-window {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n // width: 70%; /* Ajusta el tama\u00F1o del cuadro */\r\n // height: 45%; /* Ajusta el tama\u00F1o del cuadro */\r\n\r\n width: 313px;\r\n height: 500px;\r\n\r\n max-width: 90%;\r\n max-height: 90%;\r\n background: transparent;\r\n border: 2px solid white; /* Color y grosor del borde */\r\n border-radius: 10px; /* Ajusta para redondear las esquinas */\r\n z-index: 10; /* Aseg\u00FArate de que est\u00E9 encima del overlay oscuro */\r\n box-shadow: 0 0 0 100vw rgba(0, 0, 0, 0.65); /* Oscurece fuera del cuadro */\r\n}\r\n.text-help p{\r\n display: inline-block; /* Hace que solo el texto ocupe espacio */\r\n background-color: white; /* Color de fondo del texto */\r\n padding:15px; /* Espaciado interno para una mejor visualizaci\u00F3n */\r\n border-radius: 5px; /* Opcional, para esquinas redondeadas */\r\n color: black; /* Color del texto */\r\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Sombra leve */\r\n animation: popIn 1s ease-in-out; /* Agrega la animaci\u00F3n al aparecer */\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n\r\n}\r\n\r\n/* Definimos la animaci\u00F3n \"popIn\" */\r\n@keyframes popIn {\r\n 0% {\r\n transform: scale(0.8); /* Comienza m\u00E1s peque\u00F1o */\r\n opacity: 0; /* Empieza invisible */\r\n }\r\n 50% {\r\n transform: scale(1.1); /* Crece un poco m\u00E1s de lo normal */\r\n opacity: 1; /* Se hace visible */\r\n }\r\n 100% {\r\n transform: scale(1); /* Vuelve a su tama\u00F1o normal */\r\n }\r\n}\r\n\r\n.loading-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100vw;\r\n height: 100vh;\r\n background-color: rgba(0, 0, 0, 0.8); /* Fondo oscuro semi-transparente */\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000; /* Aseg\u00FArate de que est\u00E9 por encima del contenido */\r\n}\r\n\r\nion-spinner {\r\n color: white;\r\n width: 50px;\r\n height: 50px;\r\n}\r\n\r\n\r\n\r\n.camera-select {\r\n position: absolute;\r\n top: 1rem;\r\n left: 1rem;\r\n background: rgba(0, 0, 0, 0.7);\r\n padding: 0.5rem;\r\n border-radius: 0.5rem;\r\n z-index: 999;\r\n display: flex;\r\n align-items: center;\r\n color: white;\r\n\r\n label {\r\n margin-right: 0.5rem;\r\n font-size: 14px;\r\n }\r\n\r\n select {\r\n background: transparent;\r\n color: white;\r\n border: 1px solid white;\r\n border-radius: 0.3rem;\r\n font-size: 14px;\r\n padding: 0.2rem;\r\n }\r\n}\r\n\r\n.buttonfabCameraChange {\r\n --background: rgba(0, 0, 0, 0.6);\r\n --color: #fff;\r\n //box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);\r\n /* ajusta posici\u00F3n extra si lo necesitas */\r\n /* margin-top: 8px; margin-left: 8px; */\r\n}\r\n"] }]
|
|
228
220
|
}], () => [{ type: i1.Platform }, { type: i1.ModalController }, { type: i2.ModalDpiServices }], { videoElement: [{
|
|
229
221
|
type: ViewChild,
|
|
230
222
|
args: ['videoElement']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera-with-overlay.component.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.ts","../../../../../../../src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.html"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,YAAY,EACZ,KAAK,EAEL,MAAM,EACN,SAAS,EACT,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;;;;;AAc5C,MAAM,OAAO,0BAA0B;
|
|
1
|
+
{"version":3,"file":"camera-with-overlay.component.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.ts","../../../../../../../src/app/pages/id-vision/components/camera-with-overlay/camera-with-overlay.component.html"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NativeVideoSelfieComponent } from './native-video-selfie.component';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/components/native-video-selfie/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { OnDestroy, AfterViewInit, ElementRef, ChangeDetectorRef, Renderer2 } from '@angular/core';
|
|
2
|
+
import { ModalController, Platform, AlertController } from '@ionic/angular';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class NativeVideoSelfieComponent implements AfterViewInit, OnDestroy {
|
|
5
|
+
private modalController;
|
|
6
|
+
private platform;
|
|
7
|
+
private alertController;
|
|
8
|
+
private changeDetector;
|
|
9
|
+
private renderer;
|
|
10
|
+
videoElement: ElementRef<HTMLVideoElement>;
|
|
11
|
+
progressRing: ElementRef<HTMLElement>;
|
|
12
|
+
text1: string;
|
|
13
|
+
text2: string;
|
|
14
|
+
backFunction: (file: File) => Promise<boolean>;
|
|
15
|
+
closeRequested?: () => void;
|
|
16
|
+
stream: MediaStream | null;
|
|
17
|
+
isRecording: boolean;
|
|
18
|
+
mediaRecorder: MediaRecorder | null;
|
|
19
|
+
recordedChunks: Blob[];
|
|
20
|
+
countdown: number;
|
|
21
|
+
private recordingTimer;
|
|
22
|
+
private readonly minRecordingTime;
|
|
23
|
+
private readonly maxRecordingTime;
|
|
24
|
+
timeRemaining: number;
|
|
25
|
+
canStopRecording: boolean;
|
|
26
|
+
private isMobile;
|
|
27
|
+
private defaultBrightness;
|
|
28
|
+
constructor(modalController: ModalController, platform: Platform, alertController: AlertController, changeDetector: ChangeDetectorRef, renderer: Renderer2);
|
|
29
|
+
ngAfterViewInit(): Promise<void>;
|
|
30
|
+
ngOnDestroy(): Promise<void>;
|
|
31
|
+
private initializeBrightness;
|
|
32
|
+
private restoreBrightness;
|
|
33
|
+
private requestPermissions;
|
|
34
|
+
initCamera(): Promise<void>;
|
|
35
|
+
private prepareRecorder;
|
|
36
|
+
recordVideo(): void;
|
|
37
|
+
startVideoRecord(): Promise<void>;
|
|
38
|
+
updateTimeRemaining(): void;
|
|
39
|
+
stopRecording(): Promise<void>;
|
|
40
|
+
blobToFile(blob: Blob, fileName: string): File;
|
|
41
|
+
stopCamera(): void;
|
|
42
|
+
private showPermissionAlert;
|
|
43
|
+
private showErrorAlert;
|
|
44
|
+
closeOverlayVideo(): Promise<void>;
|
|
45
|
+
closeRequestedFunction(): void;
|
|
46
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NativeVideoSelfieComponent, never>;
|
|
47
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NativeVideoSelfieComponent, "app-native-video-selfie", never, { "text1": { "alias": "text1"; "required": false; }; "text2": { "alias": "text2"; "required": false; }; "backFunction": { "alias": "backFunction"; "required": false; }; "closeRequested": { "alias": "closeRequested"; "required": false; }; }, {}, never, never, true, never>;
|
|
48
|
+
}
|
package/dist/src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.js
ADDED
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { IonicModule } from '@ionic/angular';
|
|
4
|
+
import { Camera } from '@capacitor/camera';
|
|
5
|
+
import { ScreenBrightness } from '@capacitor-community/screen-brightness';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@ionic/angular";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
const _c0 = ["videoElement"];
|
|
10
|
+
const _c1 = ["progressRing"];
|
|
11
|
+
const _c2 = a0 => ({ "red": a0 });
|
|
12
|
+
function NativeVideoSelfieComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
|
|
14
|
+
i0.ɵɵtext(2);
|
|
15
|
+
i0.ɵɵelementEnd()();
|
|
16
|
+
} if (rf & 2) {
|
|
17
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
18
|
+
i0.ɵɵadvance(2);
|
|
19
|
+
i0.ɵɵtextInterpolate(ctx_r1.countdown);
|
|
20
|
+
} }
|
|
21
|
+
function NativeVideoSelfieComponent_ion_button_19_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
23
|
+
i0.ɵɵelementStart(0, "ion-button", 20);
|
|
24
|
+
i0.ɵɵlistener("click", function NativeVideoSelfieComponent_ion_button_19_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.recordVideo()); });
|
|
25
|
+
i0.ɵɵtext(1, " Iniciar Grabaci\u00F3n ");
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
} }
|
|
28
|
+
function NativeVideoSelfieComponent_ion_button_20_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
30
|
+
i0.ɵɵelementStart(0, "ion-button", 21);
|
|
31
|
+
i0.ɵɵlistener("click", function NativeVideoSelfieComponent_ion_button_20_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.stopRecording()); });
|
|
32
|
+
i0.ɵɵtext(1, " Detener Grabaci\u00F3n ");
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
36
|
+
i0.ɵɵproperty("disabled", !ctx_r1.canStopRecording);
|
|
37
|
+
} }
|
|
38
|
+
export class NativeVideoSelfieComponent {
|
|
39
|
+
constructor(modalController, platform, alertController, changeDetector, renderer) {
|
|
40
|
+
this.modalController = modalController;
|
|
41
|
+
this.platform = platform;
|
|
42
|
+
this.alertController = alertController;
|
|
43
|
+
this.changeDetector = changeDetector;
|
|
44
|
+
this.renderer = renderer;
|
|
45
|
+
this.text1 = 'Video Selfie';
|
|
46
|
+
this.text2 = 'Permanece quieto, con tu rostro en el centro del círculo.';
|
|
47
|
+
this.stream = null;
|
|
48
|
+
this.isRecording = false;
|
|
49
|
+
this.mediaRecorder = null;
|
|
50
|
+
this.recordedChunks = [];
|
|
51
|
+
this.countdown = 0;
|
|
52
|
+
this.minRecordingTime = 3000; // 3 segundos mínimo
|
|
53
|
+
this.maxRecordingTime = 5000; // 5 segundos máximo
|
|
54
|
+
this.timeRemaining = this.maxRecordingTime / 1000;
|
|
55
|
+
this.canStopRecording = true;
|
|
56
|
+
this.defaultBrightness = null;
|
|
57
|
+
this.isMobile = this.platform.is('android') || this.platform.is('ios');
|
|
58
|
+
}
|
|
59
|
+
async ngAfterViewInit() {
|
|
60
|
+
await this.initializeBrightness();
|
|
61
|
+
await this.requestPermissions();
|
|
62
|
+
// Esperar un momento para que el DOM esté completamente listo
|
|
63
|
+
setTimeout(async () => {
|
|
64
|
+
await this.initCamera();
|
|
65
|
+
}, 100);
|
|
66
|
+
}
|
|
67
|
+
async ngOnDestroy() {
|
|
68
|
+
this.stopCamera();
|
|
69
|
+
await this.restoreBrightness();
|
|
70
|
+
if (this.recordingTimer) {
|
|
71
|
+
clearTimeout(this.recordingTimer);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async initializeBrightness() {
|
|
75
|
+
if (!this.isMobile)
|
|
76
|
+
return;
|
|
77
|
+
try {
|
|
78
|
+
const { brightness } = await ScreenBrightness.getBrightness();
|
|
79
|
+
this.defaultBrightness = brightness;
|
|
80
|
+
await ScreenBrightness.setBrightness({ brightness: 1.0 });
|
|
81
|
+
console.log('✅ Brillo aumentado a máximo para video selfie');
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.warn('⚠️ No se pudo ajustar el brillo:', error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async restoreBrightness() {
|
|
88
|
+
if (this.defaultBrightness !== null) {
|
|
89
|
+
try {
|
|
90
|
+
await ScreenBrightness.setBrightness({ brightness: this.defaultBrightness });
|
|
91
|
+
console.log('✅ Brillo restaurado');
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.warn('⚠️ No se pudo restaurar el brillo:', error);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async requestPermissions() {
|
|
99
|
+
if (!this.isMobile) {
|
|
100
|
+
console.log('No es móvil, permisos no requeridos');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const permissions = await Camera.requestPermissions({
|
|
105
|
+
permissions: ['camera']
|
|
106
|
+
});
|
|
107
|
+
if (permissions.camera === 'denied') {
|
|
108
|
+
console.error('Permiso de cámara denegado');
|
|
109
|
+
await this.showPermissionAlert();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.error('Error solicitando permisos:', error);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async initCamera() {
|
|
117
|
+
try {
|
|
118
|
+
console.log('🎥 Iniciando cámara para video selfie...');
|
|
119
|
+
if (!this.videoElement) {
|
|
120
|
+
console.error('❌ VideoElement no está disponible');
|
|
121
|
+
await this.showErrorAlert('Error: VideoElement no está disponible');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const constraints = {
|
|
125
|
+
audio: true,
|
|
126
|
+
video: {
|
|
127
|
+
facingMode: 'user', // Cámara frontal para selfie
|
|
128
|
+
width: { ideal: 1280 },
|
|
129
|
+
height: { ideal: 720 },
|
|
130
|
+
aspectRatio: { ideal: 16 / 9 }
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
this.stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
134
|
+
console.log('✅ Stream obtenido:', this.stream.getTracks());
|
|
135
|
+
const video = this.videoElement.nativeElement;
|
|
136
|
+
video.srcObject = this.stream;
|
|
137
|
+
video.setAttribute('playsinline', 'true');
|
|
138
|
+
video.setAttribute('webkit-playsinline', 'true');
|
|
139
|
+
video.muted = true;
|
|
140
|
+
video.autoplay = true;
|
|
141
|
+
// Esperar a que el video esté listo
|
|
142
|
+
await new Promise((resolve) => {
|
|
143
|
+
video.onloadedmetadata = () => {
|
|
144
|
+
console.log('✅ Video metadata cargada');
|
|
145
|
+
resolve();
|
|
146
|
+
};
|
|
147
|
+
// Timeout de seguridad
|
|
148
|
+
setTimeout(() => resolve(), 1000);
|
|
149
|
+
});
|
|
150
|
+
await video.play();
|
|
151
|
+
console.log('✅ Video reproduciendo');
|
|
152
|
+
// Forzar detección de cambios
|
|
153
|
+
this.changeDetector.detectChanges();
|
|
154
|
+
await this.prepareRecorder();
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
console.error('❌ Error iniciando cámara:', error);
|
|
158
|
+
await this.showErrorAlert('No se pudo acceder a la cámara: ' + error.message);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async prepareRecorder() {
|
|
162
|
+
if (!this.stream || !this.stream.getVideoTracks().length)
|
|
163
|
+
return;
|
|
164
|
+
const isIOS = this.platform.is('ios');
|
|
165
|
+
let mimeType = '';
|
|
166
|
+
if (isIOS && MediaRecorder.isTypeSupported('video/mp4')) {
|
|
167
|
+
mimeType = 'video/mp4';
|
|
168
|
+
}
|
|
169
|
+
else if (MediaRecorder.isTypeSupported('video/webm;codecs=vp8')) {
|
|
170
|
+
mimeType = 'video/webm;codecs=vp8';
|
|
171
|
+
}
|
|
172
|
+
else if (MediaRecorder.isTypeSupported('video/webm')) {
|
|
173
|
+
mimeType = 'video/webm';
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
alert('Formato de video no soportado');
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const options = {
|
|
180
|
+
mimeType,
|
|
181
|
+
videoBitsPerSecond: 400_000,
|
|
182
|
+
};
|
|
183
|
+
this.mediaRecorder = new MediaRecorder(this.stream, options);
|
|
184
|
+
this.recordedChunks = [];
|
|
185
|
+
this.mediaRecorder.ondataavailable = (event) => {
|
|
186
|
+
if (event.data?.size > 0)
|
|
187
|
+
this.recordedChunks.push(event.data);
|
|
188
|
+
};
|
|
189
|
+
this.mediaRecorder.onerror = (event) => {
|
|
190
|
+
console.error('Error en recorder:', event);
|
|
191
|
+
alert('Error grabando video');
|
|
192
|
+
};
|
|
193
|
+
this.mediaRecorder.onstop = async () => {
|
|
194
|
+
if (!this.recordedChunks.length)
|
|
195
|
+
return;
|
|
196
|
+
const fileExtension = mimeType.includes('webm') ? 'webm' : 'mp4';
|
|
197
|
+
const blob = new Blob(this.recordedChunks, { type: mimeType });
|
|
198
|
+
const file = this.blobToFile(blob, `video-selfie.${fileExtension}`);
|
|
199
|
+
// Procesar y verificar
|
|
200
|
+
const success = await this.backFunction(file);
|
|
201
|
+
this.recordedChunks = [];
|
|
202
|
+
if (!success) {
|
|
203
|
+
console.log('⚠️ Validación falló, preparando para reintentar...');
|
|
204
|
+
// El componente padre manejará el reintento
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
recordVideo() {
|
|
209
|
+
this.countdown = 3;
|
|
210
|
+
const interval = setInterval(() => {
|
|
211
|
+
this.countdown -= 1;
|
|
212
|
+
if (this.countdown <= 0) {
|
|
213
|
+
clearInterval(interval);
|
|
214
|
+
this.startVideoRecord();
|
|
215
|
+
}
|
|
216
|
+
this.changeDetector.detectChanges();
|
|
217
|
+
}, 1000);
|
|
218
|
+
}
|
|
219
|
+
async startVideoRecord() {
|
|
220
|
+
if (this.mediaRecorder && !this.isRecording) {
|
|
221
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
222
|
+
this.mediaRecorder.start();
|
|
223
|
+
this.isRecording = true;
|
|
224
|
+
this.canStopRecording = false;
|
|
225
|
+
this.renderer.addClass(this.progressRing.nativeElement, 'progress-active');
|
|
226
|
+
this.timeRemaining = this.maxRecordingTime / 1000;
|
|
227
|
+
this.updateTimeRemaining();
|
|
228
|
+
this.recordingTimer = setTimeout(async () => {
|
|
229
|
+
this.canStopRecording = true;
|
|
230
|
+
await this.stopRecording();
|
|
231
|
+
}, this.maxRecordingTime);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
updateTimeRemaining() {
|
|
235
|
+
const timer = setInterval(() => {
|
|
236
|
+
if (this.isRecording) {
|
|
237
|
+
this.timeRemaining -= 1;
|
|
238
|
+
if (this.timeRemaining <= 0)
|
|
239
|
+
clearInterval(timer);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
clearInterval(timer);
|
|
243
|
+
}
|
|
244
|
+
this.changeDetector.detectChanges();
|
|
245
|
+
}, 1000);
|
|
246
|
+
}
|
|
247
|
+
async stopRecording() {
|
|
248
|
+
if (this.mediaRecorder && this.isRecording && this.canStopRecording) {
|
|
249
|
+
if (this.mediaRecorder.state !== 'inactive')
|
|
250
|
+
this.mediaRecorder.stop();
|
|
251
|
+
this.isRecording = false;
|
|
252
|
+
}
|
|
253
|
+
this.renderer.removeClass(this.progressRing.nativeElement, 'progress-active');
|
|
254
|
+
}
|
|
255
|
+
blobToFile(blob, fileName) {
|
|
256
|
+
const b = blob;
|
|
257
|
+
b.lastModified = Date.now();
|
|
258
|
+
b.lastModifiedDate = new Date();
|
|
259
|
+
b.name = fileName;
|
|
260
|
+
return b;
|
|
261
|
+
}
|
|
262
|
+
stopCamera() {
|
|
263
|
+
if (this.stream) {
|
|
264
|
+
this.stream.getTracks().forEach((track) => track.stop());
|
|
265
|
+
this.stream = null;
|
|
266
|
+
}
|
|
267
|
+
if (this.recordingTimer)
|
|
268
|
+
clearTimeout(this.recordingTimer);
|
|
269
|
+
}
|
|
270
|
+
async showPermissionAlert() {
|
|
271
|
+
const alert = await this.alertController.create({
|
|
272
|
+
header: 'Permiso requerido',
|
|
273
|
+
message: 'Se necesita acceso a la cámara y micrófono para grabar el video selfie.',
|
|
274
|
+
buttons: [
|
|
275
|
+
{
|
|
276
|
+
text: 'Cerrar',
|
|
277
|
+
role: 'cancel',
|
|
278
|
+
handler: () => this.closeOverlayVideo()
|
|
279
|
+
}
|
|
280
|
+
]
|
|
281
|
+
});
|
|
282
|
+
await alert.present();
|
|
283
|
+
}
|
|
284
|
+
async showErrorAlert(message) {
|
|
285
|
+
const alert = await this.alertController.create({
|
|
286
|
+
header: 'Error',
|
|
287
|
+
message: `No se pudo grabar el video: ${message}`,
|
|
288
|
+
buttons: [
|
|
289
|
+
{
|
|
290
|
+
text: 'Reintentar',
|
|
291
|
+
handler: () => this.initCamera()
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
text: 'Cerrar',
|
|
295
|
+
role: 'cancel',
|
|
296
|
+
handler: () => this.closeOverlayVideo()
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
});
|
|
300
|
+
await alert.present();
|
|
301
|
+
}
|
|
302
|
+
async closeOverlayVideo() {
|
|
303
|
+
this.stopCamera();
|
|
304
|
+
await this.restoreBrightness();
|
|
305
|
+
await this.modalController.dismiss();
|
|
306
|
+
}
|
|
307
|
+
closeRequestedFunction() {
|
|
308
|
+
this.closeOverlayVideo();
|
|
309
|
+
if (this.closeRequested) {
|
|
310
|
+
this.closeRequested();
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
static { this.ɵfac = function NativeVideoSelfieComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NativeVideoSelfieComponent)(i0.ɵɵdirectiveInject(i1.ModalController), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i1.AlertController), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2)); }; }
|
|
314
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NativeVideoSelfieComponent, selectors: [["app-native-video-selfie"]], viewQuery: function NativeVideoSelfieComponent_Query(rf, ctx) { if (rf & 1) {
|
|
315
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
316
|
+
i0.ɵɵviewQuery(_c1, 5);
|
|
317
|
+
} if (rf & 2) {
|
|
318
|
+
let _t;
|
|
319
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.videoElement = _t.first);
|
|
320
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.progressRing = _t.first);
|
|
321
|
+
} }, inputs: { text1: "text1", text2: "text2", backFunction: "backFunction", closeRequested: "closeRequested" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 21, vars: 9, consts: [["videoElement", ""], ["progressRing", ""], ["color", "light"], ["class", "countdown-overlay", 4, "ngIf"], [1, "ion-no-border"], ["slot", "end"], [3, "click", "disabled"], ["name", "close", "color", "dark"], [1, "camera-container"], [1, "video-wrapper"], ["muted", "", "autoplay", "", "playsinline", "", 2, "transform", "scaleX(-1)"], ["width", "300", "height", "300", 1, "progress-ring"], ["cx", "150", "cy", "150", "r", "150", 1, "progress-ring__circle"], [3, "ngClass"], [1, "text-center"], [1, "fixed-footer"], ["class", "button-grabar", "expand", "block", 3, "click", 4, "ngIf"], ["expand", "block", 3, "disabled", "click", 4, "ngIf"], [1, "countdown-overlay"], [1, "countdown"], ["expand", "block", 1, "button-grabar", 3, "click"], ["expand", "block", 3, "click", "disabled"]], template: function NativeVideoSelfieComponent_Template(rf, ctx) { if (rf & 1) {
|
|
322
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
323
|
+
i0.ɵɵelementStart(0, "ion-content", 2);
|
|
324
|
+
i0.ɵɵtemplate(1, NativeVideoSelfieComponent_div_1_Template, 3, 1, "div", 3);
|
|
325
|
+
i0.ɵɵelementStart(2, "ion-header", 4)(3, "ion-toolbar", 2)(4, "ion-buttons", 5)(5, "ion-button", 6);
|
|
326
|
+
i0.ɵɵlistener("click", function NativeVideoSelfieComponent_Template_ion_button_click_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.closeOverlayVideo()); });
|
|
327
|
+
i0.ɵɵelement(6, "ion-icon", 7);
|
|
328
|
+
i0.ɵɵelementEnd()()()();
|
|
329
|
+
i0.ɵɵelementStart(7, "div", 8)(8, "div", 9);
|
|
330
|
+
i0.ɵɵelement(9, "video", 10, 0);
|
|
331
|
+
i0.ɵɵnamespaceSVG();
|
|
332
|
+
i0.ɵɵelementStart(11, "svg", 11, 1);
|
|
333
|
+
i0.ɵɵelement(13, "circle", 12);
|
|
334
|
+
i0.ɵɵelementEnd()();
|
|
335
|
+
i0.ɵɵnamespaceHTML();
|
|
336
|
+
i0.ɵɵelementStart(14, "ion-label", 13);
|
|
337
|
+
i0.ɵɵtext(15);
|
|
338
|
+
i0.ɵɵelementEnd();
|
|
339
|
+
i0.ɵɵelementStart(16, "p", 14);
|
|
340
|
+
i0.ɵɵtext(17);
|
|
341
|
+
i0.ɵɵelementEnd();
|
|
342
|
+
i0.ɵɵelementStart(18, "div", 15);
|
|
343
|
+
i0.ɵɵtemplate(19, NativeVideoSelfieComponent_ion_button_19_Template, 2, 0, "ion-button", 16)(20, NativeVideoSelfieComponent_ion_button_20_Template, 2, 1, "ion-button", 17);
|
|
344
|
+
i0.ɵɵelementEnd()()();
|
|
345
|
+
} if (rf & 2) {
|
|
346
|
+
i0.ɵɵadvance();
|
|
347
|
+
i0.ɵɵproperty("ngIf", ctx.countdown > 0);
|
|
348
|
+
i0.ɵɵadvance(4);
|
|
349
|
+
i0.ɵɵproperty("disabled", !ctx.canStopRecording);
|
|
350
|
+
i0.ɵɵadvance(9);
|
|
351
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c2, ctx.isRecording));
|
|
352
|
+
i0.ɵɵadvance();
|
|
353
|
+
i0.ɵɵtextInterpolate1(" 00:", ctx.timeRemaining < 10 ? "0" + ctx.timeRemaining : ctx.timeRemaining, " ");
|
|
354
|
+
i0.ɵɵadvance(2);
|
|
355
|
+
i0.ɵɵtextInterpolate(ctx.text2);
|
|
356
|
+
i0.ɵɵadvance(2);
|
|
357
|
+
i0.ɵɵproperty("ngIf", !ctx.isRecording);
|
|
358
|
+
i0.ɵɵadvance();
|
|
359
|
+
i0.ɵɵproperty("ngIf", ctx.isRecording);
|
|
360
|
+
} }, dependencies: [IonicModule, i1.IonButton, i1.IonButtons, i1.IonContent, i1.IonHeader, i1.IonIcon, i1.IonLabel, i1.IonToolbar, CommonModule, i2.NgClass, i2.NgIf], styles: [".countdown-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9999;\n }\n\n .countdown[_ngcontent-%COMP%] {\n font-size: 120px;\n color: white;\n font-weight: bold;\n animation: _ngcontent-%COMP%_pulse 1s ease-in-out;\n }\n\n .camera-container[_ngcontent-%COMP%] {\n position: relative;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 20px;\n }\n\n .video-wrapper[_ngcontent-%COMP%] {\n position: relative;\n width: 100%;\n max-width: 500px;\n aspect-ratio: 1;\n border-radius: 50%;\n overflow: hidden;\n margin: 20px 0;\n }\n\n video[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .progress-ring[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n }\n\n .progress-ring__circle[_ngcontent-%COMP%] {\n stroke: #4CAF50;\n stroke-width: 8;\n fill: none;\n stroke-dasharray: 942;\n stroke-dashoffset: 942;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n transition: stroke-dashoffset 5s linear;\n }\n\n .progress-active[_ngcontent-%COMP%] .progress-ring__circle[_ngcontent-%COMP%] {\n stroke-dashoffset: 0;\n }\n\n ion-label[_ngcontent-%COMP%] {\n font-size: 32px;\n font-weight: bold;\n margin: 10px 0;\n }\n\n ion-label.red[_ngcontent-%COMP%] {\n color: #d32f2f;\n }\n\n .text-center[_ngcontent-%COMP%] {\n text-align: center;\n color: #666;\n margin: 10px 0;\n padding: 0 20px;\n }\n\n .fixed-footer[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n left: 20px;\n right: 20px;\n }\n\n .button-grabar[_ngcontent-%COMP%] {\n --background: #4CAF50;\n --background-hover: #45a049;\n }\n\n @keyframes _ngcontent-%COMP%_pulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.8; transform: scale(0.95); }\n }"] }); }
|
|
361
|
+
}
|
|
362
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NativeVideoSelfieComponent, [{
|
|
363
|
+
type: Component,
|
|
364
|
+
args: [{ selector: 'app-native-video-selfie', standalone: true, imports: [IonicModule, CommonModule], template: `
|
|
365
|
+
<ion-content color="light">
|
|
366
|
+
<div *ngIf="countdown > 0" class="countdown-overlay">
|
|
367
|
+
<div class="countdown">{{ countdown }}</div>
|
|
368
|
+
</div>
|
|
369
|
+
|
|
370
|
+
<ion-header class="ion-no-border">
|
|
371
|
+
<ion-toolbar color="light">
|
|
372
|
+
<ion-buttons slot="end">
|
|
373
|
+
<ion-button (click)="closeOverlayVideo()" [disabled]="!canStopRecording">
|
|
374
|
+
<ion-icon name="close" color="dark"></ion-icon>
|
|
375
|
+
</ion-button>
|
|
376
|
+
</ion-buttons>
|
|
377
|
+
</ion-toolbar>
|
|
378
|
+
</ion-header>
|
|
379
|
+
|
|
380
|
+
<div class="camera-container">
|
|
381
|
+
<div class="video-wrapper">
|
|
382
|
+
<video #videoElement muted autoplay playsinline style="transform: scaleX(-1)"></video>
|
|
383
|
+
<svg class="progress-ring" #progressRing width="300" height="300">
|
|
384
|
+
<circle class="progress-ring__circle" cx="150" cy="150" r="150" />
|
|
385
|
+
</svg>
|
|
386
|
+
</div>
|
|
387
|
+
|
|
388
|
+
<ion-label [ngClass]="{'red': isRecording}">
|
|
389
|
+
00:{{ timeRemaining < 10 ? '0' + timeRemaining : timeRemaining }}
|
|
390
|
+
</ion-label>
|
|
391
|
+
|
|
392
|
+
<p class="text-center">{{ text2 }}</p>
|
|
393
|
+
|
|
394
|
+
<div class="fixed-footer">
|
|
395
|
+
<ion-button
|
|
396
|
+
class="button-grabar"
|
|
397
|
+
*ngIf="!isRecording"
|
|
398
|
+
expand="block"
|
|
399
|
+
(click)="recordVideo()">
|
|
400
|
+
Iniciar Grabación
|
|
401
|
+
</ion-button>
|
|
402
|
+
<ion-button
|
|
403
|
+
*ngIf="isRecording"
|
|
404
|
+
expand="block"
|
|
405
|
+
(click)="stopRecording()"
|
|
406
|
+
[disabled]="!canStopRecording">
|
|
407
|
+
Detener Grabación
|
|
408
|
+
</ion-button>
|
|
409
|
+
</div>
|
|
410
|
+
</div>
|
|
411
|
+
</ion-content>
|
|
412
|
+
`, encapsulation: ViewEncapsulation.Emulated, styles: ["\n .countdown-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9999;\n }\n\n .countdown {\n font-size: 120px;\n color: white;\n font-weight: bold;\n animation: pulse 1s ease-in-out;\n }\n\n .camera-container {\n position: relative;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 20px;\n }\n\n .video-wrapper {\n position: relative;\n width: 100%;\n max-width: 500px;\n aspect-ratio: 1;\n border-radius: 50%;\n overflow: hidden;\n margin: 20px 0;\n }\n\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .progress-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n }\n\n .progress-ring__circle {\n stroke: #4CAF50;\n stroke-width: 8;\n fill: none;\n stroke-dasharray: 942;\n stroke-dashoffset: 942;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n transition: stroke-dashoffset 5s linear;\n }\n\n .progress-active .progress-ring__circle {\n stroke-dashoffset: 0;\n }\n\n ion-label {\n font-size: 32px;\n font-weight: bold;\n margin: 10px 0;\n }\n\n ion-label.red {\n color: #d32f2f;\n }\n\n .text-center {\n text-align: center;\n color: #666;\n margin: 10px 0;\n padding: 0 20px;\n }\n\n .fixed-footer {\n position: fixed;\n bottom: 20px;\n left: 20px;\n right: 20px;\n }\n\n .button-grabar {\n --background: #4CAF50;\n --background-hover: #45a049;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.8; transform: scale(0.95); }\n }\n "] }]
|
|
413
|
+
}], () => [{ type: i1.ModalController }, { type: i1.Platform }, { type: i1.AlertController }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }], { videoElement: [{
|
|
414
|
+
type: ViewChild,
|
|
415
|
+
args: ['videoElement']
|
|
416
|
+
}], progressRing: [{
|
|
417
|
+
type: ViewChild,
|
|
418
|
+
args: ['progressRing']
|
|
419
|
+
}], text1: [{
|
|
420
|
+
type: Input
|
|
421
|
+
}], text2: [{
|
|
422
|
+
type: Input
|
|
423
|
+
}], backFunction: [{
|
|
424
|
+
type: Input
|
|
425
|
+
}], closeRequested: [{
|
|
426
|
+
type: Input
|
|
427
|
+
}] }); })();
|
|
428
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NativeVideoSelfieComponent, { className: "NativeVideoSelfieComponent", filePath: "src\\app\\pages\\id-vision\\components\\native-video-selfie\\native-video-selfie.component.ts", lineNumber: 169 }); })();
|
|
429
|
+
//# sourceMappingURL=native-video-selfie.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-video-selfie.component.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TestBed, waitForAsync } from '@angular/core/testing';
|
|
2
|
+
import { IonicModule } from '@ionic/angular';
|
|
3
|
+
import { NativeVideoSelfieComponent } from './native-video-selfie.component';
|
|
4
|
+
describe('NativeVideoSelfieComponent', () => {
|
|
5
|
+
let component;
|
|
6
|
+
let fixture;
|
|
7
|
+
beforeEach(waitForAsync(() => {
|
|
8
|
+
TestBed.configureTestingModule({
|
|
9
|
+
imports: [IonicModule.forRoot(), NativeVideoSelfieComponent]
|
|
10
|
+
}).compileComponents();
|
|
11
|
+
fixture = TestBed.createComponent(NativeVideoSelfieComponent);
|
|
12
|
+
component = fixture.componentInstance;
|
|
13
|
+
fixture.detectChanges();
|
|
14
|
+
}));
|
|
15
|
+
it('should create', () => {
|
|
16
|
+
expect(component).toBeTruthy();
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=native-video-selfie.component.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-video-selfie.component.spec.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/components/native-video-selfie/native-video-selfie.component.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,SAAqC,CAAC;IAC1C,IAAI,OAAqD,CAAC;IAE1D,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE;QAC3B,OAAO,CAAC,sBAAsB,CAAC;YAC7B,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC;SAC7D,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAEvB,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;QAC9D,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACtC,OAAO,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED