metag-sdk-ionic 1.3.0-security-0.0.3 → 1.3.0-security-0.0.4
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/photo-selfie-camera/photo-selfie-camera.component.js +2 -2
- package/dist/src/app/pages/id-vision/id-vision.component.js +2 -2
- package/dist/src/app/pages/id-vision/services/dpi/dpi-service.service.js +0 -1
- package/dist/src/app/pages/id-vision/services/dpi/dpi-service.service.js.map +1 -1
- package/package.json +1 -1
package/dist/src/app/pages/id-vision/components/photo-selfie-camera/photo-selfie-camera.component.js
CHANGED
|
@@ -281,11 +281,11 @@ export class PhotoSelfieCameraComponent {
|
|
|
281
281
|
i0.ɵɵproperty("ngIf", ctx.showCountdown);
|
|
282
282
|
i0.ɵɵadvance(2);
|
|
283
283
|
i0.ɵɵproperty("disabled", ctx.isCapturing);
|
|
284
|
-
} }, dependencies: [i4.NgIf, i1.IonButton, i1.IonContent, i1.IonIcon], styles: [".camera-container[_ngcontent-%COMP%] {\n padding: 20px 20px 24px;\n gap: 20px;\n //margin-top: 1rem;\n justify-content: center;\n align-items: center;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height:
|
|
284
|
+
} }, dependencies: [i4.NgIf, i1.IonButton, i1.IonContent, i1.IonIcon], styles: [".camera-container[_ngcontent-%COMP%] {\n padding: 20px 20px 24px;\n gap: 20px;\n //margin-top: 1rem;\n justify-content: center;\n align-items: center;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n background-color: white;\n }\n\n .video-wrapper[_ngcontent-%COMP%] {\n position: relative;\n width: 300px;\n height: 300px;\n border-radius: 50%;\n overflow: hidden;\n }\n\n video[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n\n .progress-ring[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n transform: rotate(-90deg);\n \n\n }\n\n .progress-ring__circle[_ngcontent-%COMP%] {\n fill: transparent;\n stroke: purple;\n stroke-width: 12;\n stroke-dasharray: 945;\n \n\n stroke-dashoffset: 880;\n \n\n transition: stroke-dashoffset 3s linear;\n \n\n }\n\n .progress-active[_ngcontent-%COMP%] .progress-ring__circle[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_progress-animation 3s linear forwards;\n }\n\n @keyframes _ngcontent-%COMP%_progress-animation {\n from {\n stroke-dashoffset: 880;\n }\n to {\n stroke-dashoffset: 0;\n }\n }\n\n //[_ngcontent-%COMP%] div\n[_ngcontent-%COMP%] //[_ngcontent-%COMP%] {\n // color: #ffffff;\n // font-weight: 50px;\n // border-radius: 20px;\n // margin-top: 20px;\n // //width: 90%;\n // //max-width: 300px;\n // align-self: center;\n // text-transform: none;\n\n // --background: var(--purple-primary);\n // --background-hover: var(--purple-secondary);\n // --background-activated: var(--purple-secondary);\n // --background-focused: var(--purple-secondary);\n\n // --color: var(--purple-primary);\n\n // --border-radius: 20px;\n // --border-color: var(--purple-primary);\n // --border-style: solid;\n // --border-width: 1px;\n\n // --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\n\n // --ripple-color: var(--purple-secondary);\n\n\n // --padding-top: 10px;\n // --padding-bottom: 10px;\n // }\n\n .text-container[_ngcontent-%COMP%] {\n height: 40px;\n color: black;\n }\n\n ion-header[_ngcontent-%COMP%] {\n --background: #ffffff; \n\n }\n\n\n\n .centered-title[_ngcontent-%COMP%] {\n text-align: center;\n width: 100%; \n\n font-weight: bold;\n }\n\n .fixed-footer[_ngcontent-%COMP%] {\n //position: fixed;\n bottom: 10vh; // Sube el bot\u00F3n un 10% desde abajo\n left: 0;\n width: 100%;\n padding: 10px;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n\n ion-button {\n width: 90%;\n max-width: 300px;\n margin: 0 auto;\n background-color: #ffcc00;\n color: #ffffff;\n font-weight: bold;\n border-radius: 20px;\n\n --background: var(--purple-primary);\n --background-hover: var(--purple-secondary);\n --background-activated: var(--purple-secondary);\n --background-focused: var(--purple-secondary);\n\n --color: var(--purple-primary);\n\n --border-radius: 20px;\n --border-color: var(--purple-primary);\n --border-style: solid;\n --border-width: 1px;\n\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\n\n --ripple-color: var(--purple-secondary);\n\n &:hover {\n background-color: #ffb300;\n }\n\n &:active {\n background-color: #e6a800;\n }\n }\n\n // Clase para ocultar el bot\u00F3n durante la captura\n &.hidden {\n display: none;\n }\n }\n ion-header[_ngcontent-%COMP%] {\n --background: #ffffff; \n\n color: #000000; \n\n }\n\n ion-toolbar[_ngcontent-%COMP%] {\n --ion-background-color: #ffffff !important;\n --background: #ffffff !important;\n color: #000000;\n }\n\n\n ion-header[_ngcontent-%COMP%] {\n --background: #ffffff; \n\n }\n\n ion-toolbar[_ngcontent-%COMP%] {\n --ion-background-color: #ffffff !important;\n --background: #ffffff !important;\n color: #000000;\n display: flex;\n justify-content: space-between; \n\n align-items: center;\n }\n\n .centered-title[_ngcontent-%COMP%] {\n flex: 1;\n text-align: center; \n\n font-weight: bold;\n color: #000000;\n margin: 0; \n\n }\n\n ion-buttons[_ngcontent-%COMP%] {\n justify-content: flex-end; \n\n }\n .countdown-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.6); \n\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n z-index: 1000; \n\n animation: _ngcontent-%COMP%_fadeIn 0.5s ease-out, _ngcontent-%COMP%_fadeOut 0.5s ease-out 2.5s; \n\n box-sizing: border-box;\n border-radius: 0px;\n\n }\n\n ion-content.custom-content[_ngcontent-%COMP%] {\n --padding-top: 0;\n --padding-bottom: 0;\n margin: 0;\n padding: 0;\n margin-top: 10vh; // Levanta el contenido un 10% desde el tope\n height: 90vh; // Ajusta la altura para que junto con el margin sea 100%\n }\n\n .countdown[_ngcontent-%COMP%] {\n font-size: 100px;\n font-weight: bold;\n color: white;\n animation: _ngcontent-%COMP%_scaleUp 0.5s ease-out, _ngcontent-%COMP%_scaleDown 0.5s ease-out 2.5s; \n\n }\n\n \n\n @keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes _ngcontent-%COMP%_fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n \n\n @keyframes _ngcontent-%COMP%_scaleUp {\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n\n @keyframes _ngcontent-%COMP%_scaleDown {\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(0.8);\n opacity: 0;\n }\n }\n\n .red[_ngcontent-%COMP%] {\n padding: 10px;\n color: red;\n }\n\n .text-center[_ngcontent-%COMP%]{\n text-align: center;\n padding-left: 20%;\n padding-right: 20%;\n color: #333;\n }\n\n .loading-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.8); \n\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000; \n\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n border-radius: 0px;\n }\n\n ion-spinner[_ngcontent-%COMP%] {\n color: white;\n width: 50px;\n height: 50px;\n }\n\n //[_ngcontent-%COMP%] Estilos[_ngcontent-%COMP%] para[_ngcontent-%COMP%] el[_ngcontent-%COMP%] c\u00EDrculo[_ngcontent-%COMP%] morado[_ngcontent-%COMP%] con[_ngcontent-%COMP%] cuenta[_ngcontent-%COMP%] regresiva\n[_ngcontent-%COMP%] .countdown-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 10;\n }\n\n .countdown-circle[_ngcontent-%COMP%] {\n width: 200px;\n height: 200px;\n border: 10px solid purple;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(255, 255, 255, 0.8);\n }\n\n .countdown-number[_ngcontent-%COMP%] {\n font-size: 3rem;\n font-weight: bold;\n color: purple;\n }\n\n //[_ngcontent-%COMP%] Estilos[_ngcontent-%COMP%] para[_ngcontent-%COMP%] el[_ngcontent-%COMP%] bot\u00F3n[_ngcontent-%COMP%] redondo[_ngcontent-%COMP%] de[_ngcontent-%COMP%] tomar[_ngcontent-%COMP%] foto\n[_ngcontent-%COMP%] .capture-button[_ngcontent-%COMP%] {\n width: 70px;\n height: 70px;\n border-radius: 50%;\n background-color: purple;\n color: white;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n margin: 0 auto;\n }"] }); }
|
|
285
285
|
}
|
|
286
286
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PhotoSelfieCameraComponent, [{
|
|
287
287
|
type: Component,
|
|
288
|
-
args: [{ selector: 'app-photo-selfie-camera', encapsulation: ViewEncapsulation.Emulated, template: "<ion-content color=\"light\" class=\"custom-content\">\n <!-- Loading deshabilitado para evitar conflictos con loading principal -->\n <!-- <div *ngIf=\"isLoading\" class=\"loading-overlay\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div> -->\n\n <!--<ion-header class=\"ion-no-border\">\n <ion-toolbar color=\"light\">\n <ion-title class=\"centered-title\">Video Selfie</ion-title> -->\n <!--<ion-buttons slot=\"end\">\n <ion-button (click)=\"closeRequestedFunction()\">\n <ion-icon name=\"close\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>-->\n\n\n <!-- Contenedor de la c\u00E1mara y progresi\u00F3n -->\n <div class=\"camera-container\">\n\n <div style=\"width:100%;display:flex;justify-content:flex-end;\">\n <ion-button\n fill=\"clear\"\n style=\"width:42px;height:42px;--padding-start:0;--padding-end:0;--border-radius:50%;--background:#f3e8ff;--background-hover:#e9d5ff;--background-activated:#ddd6fe;--color:#82298F;\"\n (click)=\"closeRequestedFunction()\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </div>\n\n <h1\n class=\"sdk-metag-title\"\n style=\"color: #000; animation:sdk-metag-lyric-rise .45s ease both;\">\n Foto Selfie\n </h1>\n\n <div class=\"video-wrapper\">\n <video #videoElement muted autoplay playsinline style=\"transform: scaleX(-1)\"></video>\n <svg class=\"progress-ring\" #progressRing width=\"300\" height=\"300\">\n <circle class=\"progress-ring__circle\" cx=\"150\" cy=\"150\" r=\"150\"/>\n </svg>\n </div>\n\n <p *ngIf=\"!isCapturing\" class=\"text-center\">Permanece quieto, con tu rostro dentro del circulo</p>\n <p *ngIf=\"isCapturing\" class=\"text-center\">Espera un momento...</p>\n\n <!-- Efecto de c\u00EDrculo morado con cuenta regresiva -->\n <div class=\"countdown-overlay\" *ngIf=\"showCountdown\">\n <div class=\"countdown-circle\">\n <span class=\"countdown-number\">{{ countdown }}</span>\n </div>\n </div>\n <!-- Bot\u00F3n expandido y centrado para tomar foto -->\n <!--<div class=\"fixed-footer\" [class.hidden]=\"isCapturing\">-->\n <div class=\"fixed-footer\">\n <ion-button [disabled]=\"isCapturing\" expand=\"block\" (click)=\"capturePhoto()\">\n Tomar Fotograf\u00EDa\n </ion-button>\n </div>\n </div>\n</ion-content>\n", styles: [".camera-container {\n padding: 20px 20px 24px;\n gap: 20px;\n //margin-top: 1rem;\n justify-content: center;\n align-items: center;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 90%;\n background-color: white;\n }\n\n .video-wrapper {\n position: relative;\n width: 300px;\n height: 300px;\n border-radius: 50%;\n overflow: hidden;\n }\n\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n\n .progress-ring {\n position: absolute;\n top: 0;\n left: 0;\n transform: rotate(-90deg);\n /* Rotamos el c\u00EDrculo para que la animaci\u00F3n inicie desde arriba */\n }\n\n .progress-ring__circle {\n fill: transparent;\n stroke: purple;\n stroke-width: 12;\n stroke-dasharray: 945;\n /* La circunferencia del c\u00EDrculo */\n stroke-dashoffset: 880;\n /* Oculto por completo al inicio */\n transition: stroke-dashoffset 3s linear;\n /* Esto controlar\u00E1 el llenado progresivo */\n }\n\n .progress-active .progress-ring__circle {\n animation: progress-animation 3s linear forwards;\n }\n\n @keyframes progress-animation {\n from {\n stroke-dashoffset: 880;\n }\n to {\n stroke-dashoffset: 0;\n }\n }\n\n // div\n // {\n // color: #ffffff;\n // font-weight: 50px;\n // border-radius: 20px;\n // margin-top: 20px;\n // //width: 90%;\n // //max-width: 300px;\n // align-self: center;\n // text-transform: none;\n\n // --background: var(--purple-primary);\n // --background-hover: var(--purple-secondary);\n // --background-activated: var(--purple-secondary);\n // --background-focused: var(--purple-secondary);\n\n // --color: var(--purple-primary);\n\n // --border-radius: 20px;\n // --border-color: var(--purple-primary);\n // --border-style: solid;\n // --border-width: 1px;\n\n // --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\n\n // --ripple-color: var(--purple-secondary);\n\n\n // --padding-top: 10px;\n // --padding-bottom: 10px;\n // }\n\n .text-container {\n height: 40px;\n color: black;\n }\n\n ion-header {\n --background: #ffffff; /* Fondo blanco para el header */\n }\n\n\n\n .centered-title {\n text-align: center;\n width: 100%; /* Asegura que el t\u00EDtulo est\u00E9 centrado */\n font-weight: bold;\n }\n\n .fixed-footer {\n //position: fixed;\n bottom: 10vh; // Sube el bot\u00F3n un 10% desde abajo\n left: 0;\n width: 100%;\n padding: 10px;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n\n ion-button {\n width: 90%;\n max-width: 300px;\n margin: 0 auto;\n background-color: #ffcc00;\n color: #ffffff;\n font-weight: bold;\n border-radius: 20px;\n\n --background: var(--purple-primary);\n --background-hover: var(--purple-secondary);\n --background-activated: var(--purple-secondary);\n --background-focused: var(--purple-secondary);\n\n --color: var(--purple-primary);\n\n --border-radius: 20px;\n --border-color: var(--purple-primary);\n --border-style: solid;\n --border-width: 1px;\n\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\n\n --ripple-color: var(--purple-secondary);\n\n &:hover {\n background-color: #ffb300;\n }\n\n &:active {\n background-color: #e6a800;\n }\n }\n\n // Clase para ocultar el bot\u00F3n durante la captura\n &.hidden {\n display: none;\n }\n }\n ion-header {\n --background: #ffffff; /* Fondo blanco */\n color: #000000; /* Texto negro */\n }\n\n ion-toolbar {\n --ion-background-color: #ffffff !important;\n --background: #ffffff !important;\n color: #000000;\n }\n\n\n ion-header {\n --background: #ffffff; /* Fondo blanco */\n }\n\n ion-toolbar {\n --ion-background-color: #ffffff !important;\n --background: #ffffff !important;\n color: #000000;\n display: flex;\n justify-content: space-between; /* Espacio entre t\u00EDtulo y bot\u00F3n */\n align-items: center;\n }\n\n .centered-title {\n flex: 1;\n text-align: center; /* Centrar el t\u00EDtulo */\n font-weight: bold;\n color: #000000;\n margin: 0; /* Quita cualquier margen del t\u00EDtulo */\n }\n\n ion-buttons {\n justify-content: flex-end; /* Alinea el bot\u00F3n a la derecha */\n }\n .countdown-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.6); /* Fondo semi-transparente */\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n z-index: 1000; /* Asegurarse de que est\u00E9 encima de otros elementos */\n animation: fadeIn 0.5s ease-out, fadeOut 0.5s ease-out 2.5s; /* Animaciones de entrada y salida */\n box-sizing: border-box;\n border-radius: 0px;\n\n }\n\n ion-content.custom-content {\n --padding-top: 0;\n --padding-bottom: 0;\n margin: 0;\n padding: 0;\n margin-top: 10vh; // Levanta el contenido un 10% desde el tope\n height: 90vh; // Ajusta la altura para que junto con el margin sea 100%\n }\n\n .countdown {\n font-size: 100px;\n font-weight: bold;\n color: white;\n animation: scaleUp 0.5s ease-out, scaleDown 0.5s ease-out 2.5s; /* Escalar en entrada y salida */\n }\n\n /* Animaci\u00F3n para desvanecer la superposici\u00F3n */\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n /* Animaci\u00F3n para escalar el n\u00FAmero */\n @keyframes scaleUp {\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n\n @keyframes scaleDown {\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(0.8);\n opacity: 0;\n }\n }\n\n .red {\n padding: 10px;\n color: red;\n }\n\n .text-center{\n text-align: center;\n padding-left: 20%;\n padding-right: 20%;\n color: #333;\n }\n\n .loading-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.8); /* Fondo oscuro semi-transparente */\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000; /* Aseg\u00FArate de que est\u00E9 por encima del contenido */\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n border-radius: 0px;\n }\n\n ion-spinner {\n color: white;\n width: 50px;\n height: 50px;\n }\n\n // Estilos para el c\u00EDrculo morado con cuenta regresiva\n .countdown-overlay {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 10;\n }\n\n .countdown-circle {\n width: 200px;\n height: 200px;\n border: 10px solid purple;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(255, 255, 255, 0.8);\n }\n\n .countdown-number {\n font-size: 3rem;\n font-weight: bold;\n color: purple;\n }\n\n // Estilos para el bot\u00F3n redondo de tomar foto\n .capture-button {\n width: 70px;\n height: 70px;\n border-radius: 50%;\n background-color: purple;\n color: white;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n margin: 0 auto;\n }\n"] }]
|
|
288
|
+
args: [{ selector: 'app-photo-selfie-camera', encapsulation: ViewEncapsulation.Emulated, template: "<ion-content color=\"light\" class=\"custom-content\">\n <!-- Loading deshabilitado para evitar conflictos con loading principal -->\n <!-- <div *ngIf=\"isLoading\" class=\"loading-overlay\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div> -->\n\n <!--<ion-header class=\"ion-no-border\">\n <ion-toolbar color=\"light\">\n <ion-title class=\"centered-title\">Video Selfie</ion-title> -->\n <!--<ion-buttons slot=\"end\">\n <ion-button (click)=\"closeRequestedFunction()\">\n <ion-icon name=\"close\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>-->\n\n\n <!-- Contenedor de la c\u00E1mara y progresi\u00F3n -->\n <div class=\"camera-container\">\n\n <div style=\"width:100%;display:flex;justify-content:flex-end;\">\n <ion-button\n fill=\"clear\"\n style=\"width:42px;height:42px;--padding-start:0;--padding-end:0;--border-radius:50%;--background:#f3e8ff;--background-hover:#e9d5ff;--background-activated:#ddd6fe;--color:#82298F;\"\n (click)=\"closeRequestedFunction()\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </div>\n\n <h1\n class=\"sdk-metag-title\"\n style=\"color: #000; animation:sdk-metag-lyric-rise .45s ease both;\">\n Foto Selfie\n </h1>\n\n <div class=\"video-wrapper\">\n <video #videoElement muted autoplay playsinline style=\"transform: scaleX(-1)\"></video>\n <svg class=\"progress-ring\" #progressRing width=\"300\" height=\"300\">\n <circle class=\"progress-ring__circle\" cx=\"150\" cy=\"150\" r=\"150\"/>\n </svg>\n </div>\n\n <p *ngIf=\"!isCapturing\" class=\"text-center\">Permanece quieto, con tu rostro dentro del circulo</p>\n <p *ngIf=\"isCapturing\" class=\"text-center\">Espera un momento...</p>\n\n <!-- Efecto de c\u00EDrculo morado con cuenta regresiva -->\n <div class=\"countdown-overlay\" *ngIf=\"showCountdown\">\n <div class=\"countdown-circle\">\n <span class=\"countdown-number\">{{ countdown }}</span>\n </div>\n </div>\n <!-- Bot\u00F3n expandido y centrado para tomar foto -->\n <!--<div class=\"fixed-footer\" [class.hidden]=\"isCapturing\">-->\n <div class=\"fixed-footer\">\n <ion-button [disabled]=\"isCapturing\" expand=\"block\" (click)=\"capturePhoto()\">\n Tomar Fotograf\u00EDa\n </ion-button>\n </div>\n </div>\n</ion-content>\n", styles: [".camera-container {\n padding: 20px 20px 24px;\n gap: 20px;\n //margin-top: 1rem;\n justify-content: center;\n align-items: center;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n background-color: white;\n }\n\n .video-wrapper {\n position: relative;\n width: 300px;\n height: 300px;\n border-radius: 50%;\n overflow: hidden;\n }\n\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n\n .progress-ring {\n position: absolute;\n top: 0;\n left: 0;\n transform: rotate(-90deg);\n /* Rotamos el c\u00EDrculo para que la animaci\u00F3n inicie desde arriba */\n }\n\n .progress-ring__circle {\n fill: transparent;\n stroke: purple;\n stroke-width: 12;\n stroke-dasharray: 945;\n /* La circunferencia del c\u00EDrculo */\n stroke-dashoffset: 880;\n /* Oculto por completo al inicio */\n transition: stroke-dashoffset 3s linear;\n /* Esto controlar\u00E1 el llenado progresivo */\n }\n\n .progress-active .progress-ring__circle {\n animation: progress-animation 3s linear forwards;\n }\n\n @keyframes progress-animation {\n from {\n stroke-dashoffset: 880;\n }\n to {\n stroke-dashoffset: 0;\n }\n }\n\n // div\n // {\n // color: #ffffff;\n // font-weight: 50px;\n // border-radius: 20px;\n // margin-top: 20px;\n // //width: 90%;\n // //max-width: 300px;\n // align-self: center;\n // text-transform: none;\n\n // --background: var(--purple-primary);\n // --background-hover: var(--purple-secondary);\n // --background-activated: var(--purple-secondary);\n // --background-focused: var(--purple-secondary);\n\n // --color: var(--purple-primary);\n\n // --border-radius: 20px;\n // --border-color: var(--purple-primary);\n // --border-style: solid;\n // --border-width: 1px;\n\n // --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\n\n // --ripple-color: var(--purple-secondary);\n\n\n // --padding-top: 10px;\n // --padding-bottom: 10px;\n // }\n\n .text-container {\n height: 40px;\n color: black;\n }\n\n ion-header {\n --background: #ffffff; /* Fondo blanco para el header */\n }\n\n\n\n .centered-title {\n text-align: center;\n width: 100%; /* Asegura que el t\u00EDtulo est\u00E9 centrado */\n font-weight: bold;\n }\n\n .fixed-footer {\n //position: fixed;\n bottom: 10vh; // Sube el bot\u00F3n un 10% desde abajo\n left: 0;\n width: 100%;\n padding: 10px;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n\n ion-button {\n width: 90%;\n max-width: 300px;\n margin: 0 auto;\n background-color: #ffcc00;\n color: #ffffff;\n font-weight: bold;\n border-radius: 20px;\n\n --background: var(--purple-primary);\n --background-hover: var(--purple-secondary);\n --background-activated: var(--purple-secondary);\n --background-focused: var(--purple-secondary);\n\n --color: var(--purple-primary);\n\n --border-radius: 20px;\n --border-color: var(--purple-primary);\n --border-style: solid;\n --border-width: 1px;\n\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.25);\n\n --ripple-color: var(--purple-secondary);\n\n &:hover {\n background-color: #ffb300;\n }\n\n &:active {\n background-color: #e6a800;\n }\n }\n\n // Clase para ocultar el bot\u00F3n durante la captura\n &.hidden {\n display: none;\n }\n }\n ion-header {\n --background: #ffffff; /* Fondo blanco */\n color: #000000; /* Texto negro */\n }\n\n ion-toolbar {\n --ion-background-color: #ffffff !important;\n --background: #ffffff !important;\n color: #000000;\n }\n\n\n ion-header {\n --background: #ffffff; /* Fondo blanco */\n }\n\n ion-toolbar {\n --ion-background-color: #ffffff !important;\n --background: #ffffff !important;\n color: #000000;\n display: flex;\n justify-content: space-between; /* Espacio entre t\u00EDtulo y bot\u00F3n */\n align-items: center;\n }\n\n .centered-title {\n flex: 1;\n text-align: center; /* Centrar el t\u00EDtulo */\n font-weight: bold;\n color: #000000;\n margin: 0; /* Quita cualquier margen del t\u00EDtulo */\n }\n\n ion-buttons {\n justify-content: flex-end; /* Alinea el bot\u00F3n a la derecha */\n }\n .countdown-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.6); /* Fondo semi-transparente */\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n z-index: 1000; /* Asegurarse de que est\u00E9 encima de otros elementos */\n animation: fadeIn 0.5s ease-out, fadeOut 0.5s ease-out 2.5s; /* Animaciones de entrada y salida */\n box-sizing: border-box;\n border-radius: 0px;\n\n }\n\n ion-content.custom-content {\n --padding-top: 0;\n --padding-bottom: 0;\n margin: 0;\n padding: 0;\n margin-top: 10vh; // Levanta el contenido un 10% desde el tope\n height: 90vh; // Ajusta la altura para que junto con el margin sea 100%\n }\n\n .countdown {\n font-size: 100px;\n font-weight: bold;\n color: white;\n animation: scaleUp 0.5s ease-out, scaleDown 0.5s ease-out 2.5s; /* Escalar en entrada y salida */\n }\n\n /* Animaci\u00F3n para desvanecer la superposici\u00F3n */\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n /* Animaci\u00F3n para escalar el n\u00FAmero */\n @keyframes scaleUp {\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n\n @keyframes scaleDown {\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(0.8);\n opacity: 0;\n }\n }\n\n .red {\n padding: 10px;\n color: red;\n }\n\n .text-center{\n text-align: center;\n padding-left: 20%;\n padding-right: 20%;\n color: #333;\n }\n\n .loading-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.8); /* Fondo oscuro semi-transparente */\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000; /* Aseg\u00FArate de que est\u00E9 por encima del contenido */\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n border-radius: 0px;\n }\n\n ion-spinner {\n color: white;\n width: 50px;\n height: 50px;\n }\n\n // Estilos para el c\u00EDrculo morado con cuenta regresiva\n .countdown-overlay {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 10;\n }\n\n .countdown-circle {\n width: 200px;\n height: 200px;\n border: 10px solid purple;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(255, 255, 255, 0.8);\n }\n\n .countdown-number {\n font-size: 3rem;\n font-weight: bold;\n color: purple;\n }\n\n // Estilos para el bot\u00F3n redondo de tomar foto\n .capture-button {\n width: 70px;\n height: 70px;\n border-radius: 50%;\n background-color: purple;\n color: white;\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n margin: 0 auto;\n }\n"] }]
|
|
289
289
|
}], () => [{ type: i1.Platform }, { type: i1.ModalController }, { type: i2.DomSanitizer }, { type: i3.ModalDpiServices }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }], { videoElement: [{
|
|
290
290
|
type: ViewChild,
|
|
291
291
|
args: ['videoElement']
|
|
@@ -1522,11 +1522,11 @@ export class IdVisionComponent {
|
|
|
1522
1522
|
i0.ɵɵproperty("ngIf", ctx.showDebug);
|
|
1523
1523
|
i0.ɵɵadvance();
|
|
1524
1524
|
i0.ɵɵstyleProp("display", !ctx.hasInternet && !ctx.isInitCameraBlocked ? "block" : "none");
|
|
1525
|
-
} }, dependencies: [IonicModule, i1.IonButton, i1.IonCol, i1.IonContent, i1.IonFab, i1.IonFabButton, i1.IonGrid, i1.IonIcon, i1.IonInput, i1.IonItem, i1.IonProgressBar, i1.IonRow, i1.NumericValueAccessor, CommonModule, i10.NgClass, i10.NgForOf, i10.NgIf, i10.NgSwitch, i10.NgSwitchCase, i10.NgSwitchDefault, HttpClientModule, CameraSecurityBlockComponent], styles: ["// ============================================\n// ESTILOS AISLADOS DEL SDK - NO AFECTAN AL PADRE\n// ============================================\n// Usamos [_nghost-%COMP%] para[_ngcontent-%COMP%] encapsular[_ngcontent-%COMP%] todo[_ngcontent-%COMP%] dentro[_ngcontent-%COMP%] del[_ngcontent-%COMP%] componente\n//[_ngcontent-%COMP%] y[_ngcontent-%COMP%] evitar[_ngcontent-%COMP%] que[_ngcontent-%COMP%] los[_ngcontent-%COMP%] estilos[_ngcontent-%COMP%] globales[_ngcontent-%COMP%] del[_ngcontent-%COMP%] padre[_ngcontent-%COMP%] nos[_ngcontent-%COMP%] afecten\n\n[_ngcontent-%COMP%] {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n\n // Reset de estilos globales del padre\n * {\n box-sizing: border-box;\n }\n}\n\n.sdk-metag-content[_ngcontent-%COMP%] {\n padding: 10px;\n align-items: center;\n justify-content: center;\n height: 90vh;\n background-color: #fff;\n font-size: 18px;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n//[_ngcontent-%COMP%] Cuando[_ngcontent-%COMP%] es[_ngcontent-%COMP%] simpleProcess[_ngcontent-%COMP%], levanta[_ngcontent-%COMP%] el[_ngcontent-%COMP%] contenido[_ngcontent-%COMP%] un[_ngcontent-%COMP%] 10%\n.sdk-metag-content-simple-process[_ngcontent-%COMP%] {\n margin-top: 10vh;\n height: 90vh;\n}\n\n.sdk-metag-h-title[_ngcontent-%COMP%] {\n font-size: 1.5em;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n margin-top: 20px;\n}\n\n[_nghost-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 1em;\n color: #666;\n text-align: center;\n margin: 0;\n}\n\n[_nghost-%COMP%] ion-grid[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n[_nghost-%COMP%] ion-row[_ngcontent-%COMP%] {\n margin: 15px 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n[_nghost-%COMP%] ion-col[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n[_nghost-%COMP%] ion-icon[_ngcontent-%COMP%] {\n font-size: 3em;\n color: #ff8c00;\n margin-bottom: 10px;\n}\n\n.sdk-metag-container-text[_ngcontent-%COMP%] {\n text-align: justify !important;\n width: 180px;\n}\n\n[_nghost-%COMP%] p[_ngcontent-%COMP%] {\n text-align: start;\n}\n\n.sdk-metag-p-center[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.sdk-metag-p-justify[_ngcontent-%COMP%] {\n text-align: start;\n}\n\n.sdk-metag-head[_ngcontent-%COMP%] {\n padding: 20px;\n margin-top: 20px;\n margin-bottom: 80px;\n}\n\n\n.sdk-metag-verify-container[_ngcontent-%COMP%] {\n // padding: 60px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 40%; // Ocupa todo el espacio disponible en el ion-content\n text-align: center;\n //background-color: black;\n}\n\n.sdk-metag-fixed-footer[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 0px 10px 25px 10px;\n // background-color: black; // Color de fondo, opcional\n // box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); // Sombra suave para que resalte\n\n ion-button {\n width: 90%;\n max-width: 300px;\n margin: 0 auto;\n background-color: #ffcc00;\n color: #ffffff;\n font-weight: bold;\n border-radius: 20px;\n\n &:hover {\n background-color: #ffb300;\n }\n\n &:active {\n background-color: #e6a800;\n }\n }\n}\n\n.sdk-metag-dpi-container[_ngcontent-%COMP%] {\n display: flex;\n //width: 100%;\n justify-content: center;\n align-items: center;\n height: 45vh;\n img {\n width: 90%;\n transform: rotate(270deg);\n }\n}\n\n.sdk-metag-dpi-image[_ngcontent-%COMP%] {\n width: 200px;\n}\n\n.sdk-metag-image-container[_ngcontent-%COMP%] {\n width: 100px;\n max-width: 90px;\n}\n\n.sdk-metag-col-confirmation[_ngcontent-%COMP%] {\n margin-top: 100px;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n \n\n}\n\n.sdk-metag-image-item[_ngcontent-%COMP%] {\n margin-top: 50px;\n padding-top: 70px;\n}\n\n.sdk-metag-font-confirmation[_ngcontent-%COMP%] {\n font-size: 26px;\n text-align: center;\n // color: #005da9;\n color: #82298F;\n font-weight: bold;\n}\n\n\n.sdk-metag-rounded-input[_ngcontent-%COMP%] {\n margin-top: 15px;\n background-color: #f4f6fc;\n \n\n border-radius: 10px;\n \n\n padding: 5px 5px;\n \n\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n \n\n --ion-border-color: transparent;\n \n\n}\n\n[_nghost-%COMP%] ion-input[_ngcontent-%COMP%] {\n text-align: center;\n color: #F38301;\n --padding-start: 8px;\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 10px;\n display: flex;\n justify-content: space-between;\n background-color: #ffffff;\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%] {\n flex: 0 0 48%;\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] .sdk-metag-left-button[_ngcontent-%COMP%] {\n max-width: 140px;\n color: black;\n --background: white;\n --color: #82298F;\n --border-radius: 20px;\n --border-color: white;\n margin-right: auto;\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.0);\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] .sdk-metag-right-button[_ngcontent-%COMP%] {\n margin-left: auto;\n}\n\n.sdk-metag-tutorial-head[_ngcontent-%COMP%] {\n padding-top: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: black;\n}\n\n.sdk-metag-center-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 60vh;\n \n\n width: 100%;\n}\n\n.sdk-metag-tutorial-title[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.sdk-metag-rounded-input[_ngcontent-%COMP%] ion-input[_ngcontent-%COMP%] {\n font-size: 14px;\n \n\n color: #333;\n \n\n}\n\n.sdk-metag-rounded-input[_ngcontent-%COMP%]::part(native) {\n background: transparent;\n \n\n}\n\n.sdk-metag-p-info[_ngcontent-%COMP%] {\n font-weight: bold;\n color: #714e93\n}\n\n.sdk-metag-custom-button[_ngcontent-%COMP%] {\n --background: var(--purple-primary, #82298F) !important;\n --background-hover: var(--purple-secondary, #2b0d30) !important;\n --background-activated: var(--purple-secondary, #2b0d30) !important;\n --color: #ffffff !important;\n --border-radius: 20px !important;\n --padding-top: 10px !important;\n --padding-bottom: 10px !important;\n --box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.25) !important;\n text-transform: none;\n pointer-events: auto;\n\n}\n\n//blur[_ngcontent-%COMP%] effect\n\n.sdk-metag-blur-effect[_ngcontent-%COMP%] {\n filter: blur(5px);\n pointer-events: none;\n}\n\n.sdk-metag-blur-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.7);\n z-index: 999;\n filter: blur(5px);\n}\n\n.sdk-metag-boton-personalizado[_ngcontent-%COMP%] {\n background-color: #4caf50;\n \n\n color: white;\n font-size: 16px;\n}\n\n.sdk-metag-version[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 10px;\n right: 10px;\n font-size: 12px;\n z-index: 1000;\n background: #f4f6fc !important;\n padding: 10px 15px !important;\n border-radius: 20px !important;\n}\n\n.sdk-metag-button-debug[_ngcontent-%COMP%] {\n --background: #ff4081;\n --color: #fff;\n}\n\n\n.sdk-metag-wrapper-no-internet[_ngcontent-%COMP%] {\n background-color: #fff;\n height: 100vh;\n display: flex;\n justify-content: center; \n\n align-items: center; \n\n padding: 40px;\n background-image: url('assets/imagesIdvision/background.png') !important;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n}\n\n.sdk-metag-content-no-internet[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 16px;\n}\n\n.sdk-metag-title-no-internet[_ngcontent-%COMP%] {\n color: #000;\n font-size: 32px;\n font-weight: bold;\n}\n\n.sdk-metag-icon-no-internet[_ngcontent-%COMP%] {\n width: 125px;\n display: block;\n margin-top: 25px;\n}\n\n.sdk-metag-description-no-internet[_ngcontent-%COMP%] {\n margin-top: 25px;\n font-size: 22px;\n color: #000;\n line-height: 1.5;\n text-align: center;\n}\n\n.sdk-metag-no-border[_ngcontent-%COMP%] {\n --border-width: 0 !important;\n}\n\n.sdk-metag-confirmation-screen[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 80vh; // Se integra al 80% de la vista\n padding: 25px;\n box-sizing: border-box;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-color: white;\n gap: 20px; // Espacio entre elementos\n}\n\n.sdk-metag-image-confirmation[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n}\n\n.sdk-metag-image-confirmation[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n max-width: 300px; // Reducido de 500px a 300px\n width: 40%; // Reducido de 80% a 50%\n height: auto;\n}\n\n.sdk-metag-button-container[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n justify-content: center;\n padding: 0 10px;\n\n ion-button {\n width: 90%;\n max-width: 300px;\n }\n}\n\n\n.sdk-metag-close-button[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n z-index: 1000;\n font-size: 15px;\n --color: #888;\n}\n\n.sdk-metag-p-margin[_ngcontent-%COMP%] {\n margin-top: 50px !important;\n}\n\n.content[_ngcontent-%COMP%] {\n background-color: #ffffff;\n --background: #ffffff;\n}\n\n\n\n.head[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.head-title[_ngcontent-%COMP%] {\n font-size: 23px;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n}\n\n.description[_ngcontent-%COMP%] {\n text-align: center;\n margin-top: 25px;\n font-size: 14px;\n margin-bottom: 25px;\n}\n\n.head-subtitle[_ngcontent-%COMP%] {\n text-align: justify;\n margin-top: 25px;\n font-size: 14px;\n}\n\n.head-dpi[_ngcontent-%COMP%] {\n margin-top: 25px;\n //background-color: #f4f6fc;\n border-radius: 10px;\n --ion-border-color: transparent;\n //padding: 5px 5px;\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n --background: #f4f6fc !important;\n\n ion-input {\n text-align: center;\n color: #F38301;\n font-weight: 500;\n font-size: 19px;\n }\n}\n\n.instructions[_ngcontent-%COMP%] {\n}\n\n.instruction[_ngcontent-%COMP%] {\n margin: 0 !important;\n}\n\n.instruction-img[_ngcontent-%COMP%] {\n width: 100px;\n max-width: 100px;\n}\n\n.instruction-description[_ngcontent-%COMP%] {\n font-size: 13px;\n text-align: justify;\n padding-right: 15px;\n}\n\n.action-button[_ngcontent-%COMP%] {\n width: 300px;\n max-width: 300px;\n margin: 25px auto;\n --background: #82298F;\n --color: #ffffff;\n font-weight: bold;\n --border-radius: 20px;\n --box-shadow: none;\n}\n\n.exit-button[_ngcontent-%COMP%] {\n --background: transparent !important;\n --color: #F38301 !important;\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n --background: #82298F;\n}\n\n.action-button[_ngcontent-%COMP%]:active {\n --background: #82298F;\n}\n\n\n\n.card-wrapper[_ngcontent-%COMP%] {\n perspective: 1000px;\n margin: 40px;\n}\n\n\n\n.card[_ngcontent-%COMP%] {\n position: relative;\n width: 100%;\n height: 350px;\n transform-style: preserve-3d;\n transition: transform 1s ease-in-out;\n cursor: pointer;\n}\n\n\n\n.card.flip[_ngcontent-%COMP%] {\n transform: rotateY(180deg);\n}\n\n\n\n.side[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n backface-visibility: hidden;\n\n img {\n transform: rotate(270deg);\n width: 100%;\n object-fit: contain;\n }\n}\n\n.front[_ngcontent-%COMP%] {\n z-index: 2;\n}\n\n.back[_ngcontent-%COMP%] {\n transform: rotateY(180deg);\n}\n\n.avatar-wrapper[_ngcontent-%COMP%]{\n width:100%;\n display:flex;\n justify-content:center;\n margin-bottom:20px;\n}\n\n.avatar-container[_ngcontent-%COMP%]{\n position:relative;\n width:300px;\n height:300px;\n margin-bottom: 25px;\n}\n\n.avatar[_ngcontent-%COMP%]{\n width:100%;\n height:100%;\n border-radius:50%;\n object-fit:cover;\n padding: 35px;\n}\n\n.lottie-container[_ngcontent-%COMP%]{\n position:absolute;\n inset:0;\n}\n\nion-progress-bar[_ngcontent-%COMP%]{\n height:7px;\n border-radius:10px;\n --progress-background: #F38301;\n}\n\n.slide-six[_ngcontent-%COMP%] {\n}\n\n\n.status-container[_ngcontent-%COMP%] {\n text-align: center !important;\n margin-top: 20px;\n min-height: 30px;\n}\n\n.status-text[_ngcontent-%COMP%] {\n text-align: center !important;\n color: #444;\n font-size: 14px !important;\n opacity: 0;\n transform: translateY(10px);\n transition: all .4s ease;\n}\n\n.status-text.show[_ngcontent-%COMP%] {\n opacity: 1;\n transform: translateY(0);\n}\n\n.button-success[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_checkPop 0.4s ease;\n}\n\n@keyframes _ngcontent-%COMP%_checkPop{\n\n 0%{\n transform: scale(0);\n opacity:0;\n }\n\n 60%{\n transform: scale(1.2);\n }\n\n 100%{\n transform: scale(1);\n opacity:1;\n }\n\n}"] }); }
|
|
1525
|
+
} }, dependencies: [IonicModule, i1.IonButton, i1.IonCol, i1.IonContent, i1.IonFab, i1.IonFabButton, i1.IonGrid, i1.IonIcon, i1.IonInput, i1.IonItem, i1.IonProgressBar, i1.IonRow, i1.NumericValueAccessor, CommonModule, i10.NgClass, i10.NgForOf, i10.NgIf, i10.NgSwitch, i10.NgSwitchCase, i10.NgSwitchDefault, HttpClientModule, CameraSecurityBlockComponent], styles: ["// ============================================\n// ESTILOS AISLADOS DEL SDK - NO AFECTAN AL PADRE\n// ============================================\n// Usamos [_nghost-%COMP%] para[_ngcontent-%COMP%] encapsular[_ngcontent-%COMP%] todo[_ngcontent-%COMP%] dentro[_ngcontent-%COMP%] del[_ngcontent-%COMP%] componente\n//[_ngcontent-%COMP%] y[_ngcontent-%COMP%] evitar[_ngcontent-%COMP%] que[_ngcontent-%COMP%] los[_ngcontent-%COMP%] estilos[_ngcontent-%COMP%] globales[_ngcontent-%COMP%] del[_ngcontent-%COMP%] padre[_ngcontent-%COMP%] nos[_ngcontent-%COMP%] afecten\n\n[_ngcontent-%COMP%] {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n\n // Reset de estilos globales del padre\n * {\n box-sizing: border-box;\n }\n}\n\n.sdk-metag-content[_ngcontent-%COMP%] {\n padding: 10px;\n align-items: center;\n justify-content: center;\n height: 90vh;\n background-color: #fff;\n font-size: 18px;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n//[_ngcontent-%COMP%] Cuando[_ngcontent-%COMP%] es[_ngcontent-%COMP%] simpleProcess[_ngcontent-%COMP%], levanta[_ngcontent-%COMP%] el[_ngcontent-%COMP%] contenido[_ngcontent-%COMP%] un[_ngcontent-%COMP%] 10%\n.sdk-metag-content-simple-process[_ngcontent-%COMP%] {\n margin-top: 10vh;\n height: 90vh;\n}\n\n.sdk-metag-h-title[_ngcontent-%COMP%] {\n font-size: 1.5em;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n margin-top: 20px;\n}\n\n[_nghost-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 1em;\n color: #666;\n text-align: center;\n margin: 0;\n}\n\n[_nghost-%COMP%] ion-grid[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n[_nghost-%COMP%] ion-row[_ngcontent-%COMP%] {\n margin: 15px 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n[_nghost-%COMP%] ion-col[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n[_nghost-%COMP%] ion-icon[_ngcontent-%COMP%] {\n font-size: 3em;\n color: #ff8c00;\n margin-bottom: 10px;\n}\n\n.sdk-metag-container-text[_ngcontent-%COMP%] {\n text-align: justify !important;\n width: 180px;\n}\n\n[_nghost-%COMP%] p[_ngcontent-%COMP%] {\n text-align: start;\n}\n\n.sdk-metag-p-center[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.sdk-metag-p-justify[_ngcontent-%COMP%] {\n text-align: start;\n}\n\n.sdk-metag-head[_ngcontent-%COMP%] {\n padding: 20px;\n margin-top: 20px;\n margin-bottom: 80px;\n}\n\n\n.sdk-metag-verify-container[_ngcontent-%COMP%] {\n // padding: 60px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 40%; // Ocupa todo el espacio disponible en el ion-content\n text-align: center;\n //background-color: black;\n}\n\n.sdk-metag-fixed-footer[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 0px 10px 25px 10px;\n // background-color: black; // Color de fondo, opcional\n // box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); // Sombra suave para que resalte\n\n ion-button {\n width: 90%;\n max-width: 300px;\n margin: 0 auto;\n background-color: #ffcc00;\n color: #ffffff;\n font-weight: bold;\n border-radius: 20px;\n\n &:hover {\n background-color: #ffb300;\n }\n\n &:active {\n background-color: #e6a800;\n }\n }\n}\n\n.sdk-metag-dpi-container[_ngcontent-%COMP%] {\n display: flex;\n //width: 100%;\n justify-content: center;\n align-items: center;\n height: 45vh;\n img {\n width: 90%;\n transform: rotate(270deg);\n }\n}\n\n.sdk-metag-dpi-image[_ngcontent-%COMP%] {\n width: 200px;\n}\n\n.sdk-metag-image-container[_ngcontent-%COMP%] {\n width: 100px;\n max-width: 90px;\n}\n\n.sdk-metag-col-confirmation[_ngcontent-%COMP%] {\n margin-top: 100px;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n \n\n}\n\n.sdk-metag-image-item[_ngcontent-%COMP%] {\n margin-top: 50px;\n padding-top: 70px;\n}\n\n.sdk-metag-font-confirmation[_ngcontent-%COMP%] {\n font-size: 26px;\n text-align: center;\n // color: #005da9;\n color: #82298F;\n font-weight: bold;\n}\n\n\n.sdk-metag-rounded-input[_ngcontent-%COMP%] {\n margin-top: 15px;\n background-color: #f4f6fc;\n \n\n border-radius: 10px;\n \n\n padding: 5px 5px;\n \n\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n \n\n --ion-border-color: transparent;\n \n\n}\n\n[_nghost-%COMP%] ion-input[_ngcontent-%COMP%] {\n text-align: center;\n color: #F38301;\n --padding-start: 8px;\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 10px;\n display: flex;\n justify-content: space-between;\n background-color: #ffffff;\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] ion-button[_ngcontent-%COMP%] {\n flex: 0 0 48%;\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] .sdk-metag-left-button[_ngcontent-%COMP%] {\n max-width: 140px;\n color: black;\n --background: white;\n --color: #82298F;\n --border-radius: 20px;\n --border-color: white;\n margin-right: auto;\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.0);\n}\n\n[_nghost-%COMP%] .sdk-metag-custom-footer[_ngcontent-%COMP%] .sdk-metag-right-button[_ngcontent-%COMP%] {\n margin-left: auto;\n}\n\n.sdk-metag-tutorial-head[_ngcontent-%COMP%] {\n padding-top: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: black;\n}\n\n.sdk-metag-center-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 60vh;\n \n\n width: 100%;\n}\n\n.sdk-metag-tutorial-title[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.sdk-metag-rounded-input[_ngcontent-%COMP%] ion-input[_ngcontent-%COMP%] {\n font-size: 14px;\n \n\n color: #333;\n \n\n}\n\n.sdk-metag-rounded-input[_ngcontent-%COMP%]::part(native) {\n background: transparent;\n \n\n}\n\n.sdk-metag-p-info[_ngcontent-%COMP%] {\n font-weight: bold;\n color: #714e93\n}\n\n.sdk-metag-custom-button[_ngcontent-%COMP%] {\n --background: var(--purple-primary, #82298F) !important;\n --background-hover: var(--purple-secondary, #2b0d30) !important;\n --background-activated: var(--purple-secondary, #2b0d30) !important;\n --color: #ffffff !important;\n --border-radius: 20px !important;\n --padding-top: 10px !important;\n --padding-bottom: 10px !important;\n --box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.25) !important;\n text-transform: none;\n pointer-events: auto;\n\n}\n\n//blur[_ngcontent-%COMP%] effect\n\n.sdk-metag-blur-effect[_ngcontent-%COMP%] {\n filter: blur(5px);\n pointer-events: none;\n}\n\n.sdk-metag-blur-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.7);\n z-index: 999;\n filter: blur(5px);\n}\n\n.sdk-metag-boton-personalizado[_ngcontent-%COMP%] {\n background-color: #4caf50;\n \n\n color: white;\n font-size: 16px;\n}\n\n.sdk-metag-version[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 10px;\n right: 10px;\n font-size: 12px;\n z-index: 1000;\n background: #f4f6fc !important;\n padding: 10px 15px !important;\n border-radius: 20px !important;\n}\n\n.sdk-metag-button-debug[_ngcontent-%COMP%] {\n --background: #ff4081;\n --color: #fff;\n}\n\n\n.sdk-metag-wrapper-no-internet[_ngcontent-%COMP%] {\n background-color: #fff;\n height: 100vh;\n display: flex;\n justify-content: center; \n\n align-items: center; \n\n padding: 40px;\n background-image: url('assets/imagesIdvision/background.png') !important;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n}\n\n.sdk-metag-content-no-internet[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 16px;\n}\n\n.sdk-metag-title-no-internet[_ngcontent-%COMP%] {\n color: #000;\n font-size: 32px;\n font-weight: bold;\n}\n\n.sdk-metag-icon-no-internet[_ngcontent-%COMP%] {\n width: 125px;\n display: block;\n margin-top: 25px;\n}\n\n.sdk-metag-description-no-internet[_ngcontent-%COMP%] {\n margin-top: 25px;\n font-size: 22px;\n color: #000;\n line-height: 1.5;\n text-align: center;\n}\n\n.sdk-metag-no-border[_ngcontent-%COMP%] {\n --border-width: 0 !important;\n}\n\n.sdk-metag-confirmation-screen[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 80vh; // Se integra al 80% de la vista\n padding: 25px;\n box-sizing: border-box;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-color: white;\n gap: 20px; // Espacio entre elementos\n}\n\n.sdk-metag-image-confirmation[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n}\n\n.sdk-metag-image-confirmation[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n max-width: 300px; // Reducido de 500px a 300px\n width: 40%; // Reducido de 80% a 50%\n height: auto;\n}\n\n.sdk-metag-button-container[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n justify-content: center;\n padding: 0 10px;\n\n ion-button {\n width: 90%;\n max-width: 300px;\n }\n}\n\n\n.sdk-metag-close-button[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n z-index: 1000;\n font-size: 15px;\n --color: #888;\n}\n\n.sdk-metag-p-margin[_ngcontent-%COMP%] {\n margin-top: 50px !important;\n}\n\n.content[_ngcontent-%COMP%] {\n background-color: #ffffff;\n --background: #ffffff;\n}\n\n\n\n.head[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.head-title[_ngcontent-%COMP%] {\n font-size: 23px;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n}\n\n.description[_ngcontent-%COMP%] {\n text-align: center;\n margin-top: 25px;\n font-size: 14px;\n margin-bottom: 25px;\n}\n\n.head-subtitle[_ngcontent-%COMP%] {\n text-align: justify;\n margin-top: 25px;\n font-size: 14px;\n}\n\n.head-dpi[_ngcontent-%COMP%] {\n margin-top: 25px;\n //background-color: #f4f6fc;\n border-radius: 10px;\n --ion-border-color: transparent;\n //padding: 5px 5px;\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n --background: #f4f6fc !important;\n\n ion-input {\n text-align: center;\n color: #F38301;\n font-weight: 500;\n font-size: 19px;\n }\n}\n\n.instructions[_ngcontent-%COMP%] {\n}\n\n.instruction[_ngcontent-%COMP%] {\n margin: 0 !important;\n}\n\n.instruction-img[_ngcontent-%COMP%] {\n width: 100px;\n max-width: 100px;\n}\n\n.instruction-description[_ngcontent-%COMP%] {\n font-size: 13px;\n text-align: justify;\n padding-right: 15px;\n}\n\n.action-button[_ngcontent-%COMP%] {\n width: 300px;\n max-width: 300px;\n margin: 25px auto;\n --background: #82298F;\n --color: #ffffff;\n font-weight: bold;\n --border-radius: 20px;\n --box-shadow: none;\n}\n\n.exit-button[_ngcontent-%COMP%] {\n --background: transparent !important;\n --color: #F38301 !important;\n}\n\n.action-button[_ngcontent-%COMP%]:hover {\n --background: #82298F;\n}\n\n.action-button[_ngcontent-%COMP%]:active {\n --background: #82298F;\n}\n\n\n\n.card-wrapper[_ngcontent-%COMP%] {\n perspective: 1000px;\n //margin: 40px;\n margin: 25px;\n}\n\n\n\n.card[_ngcontent-%COMP%] {\n position: relative;\n width: 100%;\n height: 350px;\n transform-style: preserve-3d;\n transition: transform 1s ease-in-out;\n cursor: pointer;\n}\n\n\n\n.card.flip[_ngcontent-%COMP%] {\n transform: rotateY(180deg);\n}\n\n\n\n.side[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n backface-visibility: hidden;\n\n img {\n transform: rotate(270deg);\n width: 100%;\n object-fit: contain;\n }\n}\n\n.front[_ngcontent-%COMP%] {\n z-index: 2;\n}\n\n.back[_ngcontent-%COMP%] {\n transform: rotateY(180deg);\n}\n\n.avatar-wrapper[_ngcontent-%COMP%]{\n width:100%;\n display:flex;\n justify-content:center;\n margin-bottom:20px;\n}\n\n.avatar-container[_ngcontent-%COMP%]{\n position:relative;\n width:300px;\n height:300px;\n margin-bottom: 25px;\n}\n\n.avatar[_ngcontent-%COMP%]{\n width:100%;\n height:100%;\n border-radius:50%;\n object-fit:cover;\n padding: 35px;\n}\n\n.lottie-container[_ngcontent-%COMP%]{\n position:absolute;\n inset:0;\n}\n\nion-progress-bar[_ngcontent-%COMP%]{\n height:7px;\n border-radius:10px;\n --progress-background: #F38301;\n}\n\n.slide-six[_ngcontent-%COMP%] {\n}\n\n\n.status-container[_ngcontent-%COMP%] {\n text-align: center !important;\n margin-top: 20px;\n min-height: 30px;\n}\n\n.status-text[_ngcontent-%COMP%] {\n text-align: center !important;\n color: #444;\n font-size: 14px !important;\n opacity: 0;\n transform: translateY(10px);\n transition: all .4s ease;\n}\n\n.status-text.show[_ngcontent-%COMP%] {\n opacity: 1;\n transform: translateY(0);\n}\n\n.button-success[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_checkPop 0.4s ease;\n}\n\n@keyframes _ngcontent-%COMP%_checkPop{\n\n 0%{\n transform: scale(0);\n opacity:0;\n }\n\n 60%{\n transform: scale(1.2);\n }\n\n 100%{\n transform: scale(1);\n opacity:1;\n }\n\n}"] }); }
|
|
1526
1526
|
}
|
|
1527
1527
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IdVisionComponent, [{
|
|
1528
1528
|
type: Component,
|
|
1529
|
-
args: [{ selector: 'app-id-vision', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [IonicModule, CommonModule, HttpClientModule, CameraSecurityBlockComponent], providers: [DpiService, ConfigurationService, ValidationService, NavigationService, ProcessingService], encapsulation: ViewEncapsulation.Emulated, template: "<ion-content *ngIf=\"isInitCameraBlocked\" class=\"content\">\n <app-camera-security-block\n [title]=\"'Bloqueo por seguridad'\"\n [description]=\"'Detectamos una c\u00E1mara virtual o no permitida durante la inicializaci\u00F3n del SDK.'\"\n [reason]=\"initCameraBlockReason\"\n [exitLabel]=\"'Entiendo'\"\n (exitPressed)=\"handleInitSecurityExit()\">\n </app-camera-security-block>\n</ion-content>\n\n<ion-content class=\"content\" [style.display]=\"hasInternet && !isInitCameraBlocked ? 'block' : 'none'\">\n\n <swiper-container *ngIf=\"!simpleProcess\" init=\"false\" class=\"custom-swiper\" #swiperContainer\n (swiperslidechange)=\"onSlideChange()\">\n\n <!-- \uD83D\uDD39 PASO 1: Verificaci\u00F3n de Identidad (Est\u00E1tico) -->\n <swiper-slide *ngIf=\"!simpleProcess\">\n <div class=\"slide-one\">\n <div class=\"head\">\n <div class=\"head-title\">Verifiquemos tu identidad</div>\n <div class=\"head-subtitle\">\n Por favor confirma tu n\u00FAmero de identificaci\u00F3n (DPI) y sigue las instrucciones.\n </div>\n\n <ion-item class=\"head-dpi\">\n <ion-input #dpi type=\"number\" disabled=\"true\" placeholder=\"0000000000000\"></ion-input>\n </ion-item>\n </div>\n\n <ion-grid class=\"instructions\">\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/documentsImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">\n Ten a la mano tu DPI y sube una foto del frente y reverso de tu documento.\n </div>\n </ion-col>\n </ion-row>\n\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">\n Graba un video corto, mant\u00E9n tu rostro dentro del c\u00EDrculo y evita moverte.\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <ion-button\n class=\"action-button\"\n expand=\"block\"\n (click)=\"handleClick()\">\n Empecemos\n </ion-button>\n </div>\n </swiper-slide>\n\n <!-- \uD83D\uDD39 PASOS INTERMEDIOS: Se generan din\u00E1micamente seg\u00FAn el `order` -->\n <swiper-slide *ngFor=\"let step of validationConfig\">\n <div class=\"slide-two\" [ngSwitch]=\"step.type\">\n <!--Acuerdo de video-->\n <div *ngSwitchCase=\"1\" [ngClass]=\"{'sdk-metag-blur-effect': simpleProcess}\">\n <div class=\"head\">\n <div class=\"head-title\">Acuerdo de v\u00EDdeo</div>\n <div class=\"head-subtitle\">Graba un video corto para completar tu proceso de identificaci\u00F3n.</div>\n </div>\n <ion-grid class=\"instructions\">\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/Foco.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">Tu rostro debe de estar iluminado sin sombra y sin reflejos.\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">No uses anteojos, ni sombreros, tu rostro debe estar visible.</div>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Abrir la c\u00E1mara</ion-button>\n\n </div>\n <!-- \uD83D\uDD39 DPI Frontal -->\n <div *ngSwitchCase=\"2\">\n <div class=\"head\">\n <div class=\"head-title\">DPI frontal</div>\n <div class=\"head-subtitle\">\n Toma una foto de la parte frontal de tu documento,\n asegurate que este dentro del recuadro, evita sombras y reflejos.\n </div>\n </div>\n\n <div class=\"card-wrapper\">\n <div class=\"card\">\n <div class=\"side front\">\n <img src=\"assets/imagesIdvision/dpi_m_f.png\" alt=\"Frontal\">\n </div>\n </div>\n </div>\n <!--<div class=\"sdk-metag-dpi-container\">\n <img src=\"assets/imagesIdvision/dpi-front-1.png\" alt=\"\"/>\n <img src=\"assets/imagesIdvision/dpi_m_f.png\" alt=\"\"/>\n </div>-->\n\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Tomar foto</ion-button>\n </div>\n\n <!-- \uD83D\uDD39 DPI Trasero -->\n <div *ngSwitchCase=\"3\">\n <div class=\"head\">\n <div class=\"head-title\">DPI reverso</div>\n <div class=\"head-subtitle\">\n Voltea tu documento y toma una foto del reverso de tu documento,\n asegurate que este dentro del recuadro, evita sombras y reflejos.\n </div>\n </div>\n\n <div class=\"card-wrapper\">\n <div class=\"card\" [class.flip]=\"flip\">\n <div class=\"side front\">\n <img src=\"assets/imagesIdvision/dpi_m_f.png\" alt=\"Frontal\">\n </div>\n <div class=\"side back\">\n <img src=\"assets/imagesIdvision/dpi_t.png\" alt=\"Reverso\">\n </div>\n </div>\n </div>\n\n <!--<div class=\"sdk-metag-dpi-container\">\n <img src=\"assets/imagesIdvision/dpi-back-1.png\" alt=\"\"/>\n <img src=\"assets/imagesIdvision/dpi_t.png\" alt=\"\"/>\n </div>-->\n <ion-button [disabled]=\"waitFlip\" class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Tomar foto\n </ion-button>\n </div>\n\n <!-- \uD83D\uDD39 Video Selfie -->\n <div *ngSwitchCase=\"4\">\n <div class=\"head\">\n <div class=\"head-title\">Prueba de vida</div>\n <div class=\"head-subtitle\">Graba un video corto para completar tu proceso de identificaci\u00F3n.</div>\n </div>\n <ion-grid class=\"instructions\">\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/Foco.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">Tu rostro debe de estar iluminado sin sombra y sin reflejos.</div>\n </ion-col>\n </ion-row>\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">No uses anteojos, ni sombreros, tu rostro debe estar visible.</div>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Abrir la c\u00E1mara</ion-button>\n </div>\n <!-- Photo Selfie -->\n <!-- TODO Se debera cambiar a 5, se dejo 1 por acuerdo de video -->\n <div *ngSwitchCase=\"5\">\n <div class=\"sdk-metag-head\">\n <h2 class=\"sdk-metag-h-title\">Foto Selfie</h2>\n <p class=\"sdk-metag-p-justify\">Toma una foto para completar tu proceso de identificaci\u00F3n.</p>\n </div>\n <ion-grid class=\"sdk-metag-verify-container\">\n <ion-row>\n <ion-row>\n <div class=\"sdk-metag-image-container\">\n <img src=\"assets/imagesIdvision/Foco.png\" alt=\"\"/>\n </div>\n <div class=\"sdk-metag-container-text\">\n <p>Si est\u00E1s en interiores, aseg\u00FArate de que la luz est\u00E9 frente a ti, no detr\u00E1s.</p>\n </div>\n </ion-row>\n <ion-row>\n <div class=\"sdk-metag-image-container\">\n <img src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </div>\n <div class=\"sdk-metag-container-text\">\n <p>Aseg\u00FArate de que tu rostro sea visible y de no usar anteojos ni sombreros.</p>\n </div>\n </ion-row>\n </ion-row>\n </ion-grid>\n <div class=\"sdk-metag-fixed-footer\">\n <ion-button class=\"sdk-metag-custom-button\" expand=\"block\" (click)=\"step.action()\">Abrir la c\u00E1mara\n </ion-button>\n </div>\n </div>\n <div *ngSwitchCase=\"6\">\n <div class=\"slide-six\">\n <div class=\"head\">\n <div class=\"head-title\">Verificando identidad</div>\n </div>\n\n <div class=\"avatar-wrapper\">\n\n <div class=\"avatar-container\">\n <img src=\"{{image}}\" class=\"avatar\">\n <div class=\"lottie-container\"></div>\n\n <!--<div class=\"description\">Por favor, espera un momento...</div>-->\n\n <div class=\"status-container\">\n <!--<ion-icon *ngIf=\"progress === 1\" name=\"checkmark-circle\" class=\"success-check\"></ion-icon>-->\n <p class=\"status-text\"\n [class.show]=\"showText\">\n {{ currentText }}\n </p>\n </div>\n\n\n <ion-progress-bar [value]=\"progress\"></ion-progress-bar>\n </div>\n </div>\n <ion-button\n style=\"margin: 100px auto 0 !important;\"\n *ngIf=\"progress === 1 && comparsionStatus === 'success'\"\n class=\"action-button button-success\"\n expand=\"block\"\n (click)=\"finalizar()\">\n Continuar\n </ion-button>\n <ion-button\n style=\"margin: 100px auto 0 !important;\"\n *ngIf=\"progress === 1 && comparsionStatus === 'error'\"\n class=\"action-button button-success\"\n expand=\"block\"\n (click)=\"handleExit()\">\n Salir\n </ion-button>\n </div>\n </div>\n <div *ngSwitchDefault>\n <h2>Paso desconocido</h2>\n </div>\n </div>\n </swiper-slide>\n\n <swiper-slide>\n <div class=\"slide-third\">\n <div class=\"head\" *ngIf=\"isValid\">\n <div class=\"head-title\">Informaci\u00F3n procesada de manera correcta</div>\n </div>\n <div class=\"head\" *ngIf=\"!isValid\">\n <div class=\"head-title\">Ocurri\u00F3 un error al procesar la informaci\u00F3n</div>\n </div>\n <div class=\"sdk-metag-image-confirmation\">\n <img src=\"assets/imagesIdvision/blue-check.png\" alt=\"Check morado\"/>\n </div>\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"handleExit()\">Continuar</ion-button>\n </div>\n </swiper-slide>\n </swiper-container>\n\n <div class=\"sdk-metag-version\">{{ versionSDK }} {{ configEnv.show_label ? configEnv.env_name : '' }}</div>\n\n <ion-fab vertical=\"top\" horizontal=\"end\" slot=\"fixed\" *ngIf=\"showDebug\">\n <ion-fab-button class=\"sdk-metag-button-debug\" (click)=\"copyProccess()\">\n <ion-icon name=\"bug-outline\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n</ion-content>\n<!-- pantalla para cuando no exista internet -->\n<ion-content [style.display]=\"!hasInternet && !isInitCameraBlocked ? 'block' : 'none'\">\n <div class=\"sdk-metag-wrapper-no-internet\">\n <div class=\"sdk-metag-content-no-internet\">\n <h2 class=\"sdk-metag-title-no-internet\">Error de conexi\u00F3n</h2>\n <img src=\"assets/imagesIdvision/no-internet.svg\" alt=\"Error conexi\u00F3n img\" class=\"sdk-metag-icon-no-internet\"/>\n <p class=\"sdk-metag-description-no-internet\">\n No pudimos cargar la p\u00E1gina. <br>\n Verifica tu internet y prueba de nuevo.\n </p>\n </div>\n </div>\n</ion-content>\n", styles: ["// ============================================\n// ESTILOS AISLADOS DEL SDK - NO AFECTAN AL PADRE\n// ============================================\n// Usamos :host para encapsular todo dentro del componente\n// y evitar que los estilos globales del padre nos afecten\n\n:host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n\n // Reset de estilos globales del padre\n * {\n box-sizing: border-box;\n }\n}\n\n.sdk-metag-content {\n padding: 10px;\n align-items: center;\n justify-content: center;\n height: 90vh;\n background-color: #fff;\n font-size: 18px;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n// Cuando es simpleProcess, levanta el contenido un 10%\n.sdk-metag-content-simple-process {\n margin-top: 10vh;\n height: 90vh;\n}\n\n.sdk-metag-h-title {\n font-size: 1.5em;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n margin-top: 20px;\n}\n\n:host p {\n font-size: 1em;\n color: #666;\n text-align: center;\n margin: 0;\n}\n\n:host ion-grid {\n margin-top: 20px;\n}\n\n:host ion-row {\n margin: 15px 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n:host ion-col {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n:host ion-icon {\n font-size: 3em;\n color: #ff8c00;\n margin-bottom: 10px;\n}\n\n.sdk-metag-container-text {\n text-align: justify !important;\n width: 180px;\n}\n\n:host p {\n text-align: start;\n}\n\n.sdk-metag-p-center {\n text-align: center;\n}\n\n.sdk-metag-p-justify {\n text-align: start;\n}\n\n.sdk-metag-head {\n padding: 20px;\n margin-top: 20px;\n margin-bottom: 80px;\n}\n\n\n.sdk-metag-verify-container {\n // padding: 60px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 40%; // Ocupa todo el espacio disponible en el ion-content\n text-align: center;\n //background-color: black;\n}\n\n.sdk-metag-fixed-footer {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 0px 10px 25px 10px;\n // background-color: black; // Color de fondo, opcional\n // box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); // Sombra suave para que resalte\n\n ion-button {\n width: 90%;\n max-width: 300px;\n margin: 0 auto;\n background-color: #ffcc00;\n color: #ffffff;\n font-weight: bold;\n border-radius: 20px;\n\n &:hover {\n background-color: #ffb300;\n }\n\n &:active {\n background-color: #e6a800;\n }\n }\n}\n\n.sdk-metag-dpi-container {\n display: flex;\n //width: 100%;\n justify-content: center;\n align-items: center;\n height: 45vh;\n img {\n width: 90%;\n transform: rotate(270deg);\n }\n}\n\n.sdk-metag-dpi-image {\n width: 200px;\n}\n\n.sdk-metag-image-container {\n width: 100px;\n max-width: 90px;\n}\n\n.sdk-metag-col-confirmation {\n margin-top: 100px;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n /* Ajusta el espacio entre los elementos */\n}\n\n.sdk-metag-image-item {\n margin-top: 50px;\n padding-top: 70px;\n}\n\n.sdk-metag-font-confirmation {\n font-size: 26px;\n text-align: center;\n // color: #005da9;\n color: #82298F;\n font-weight: bold;\n}\n\n\n.sdk-metag-rounded-input {\n margin-top: 15px;\n background-color: #f4f6fc;\n /* Color de fondo suave */\n border-radius: 10px;\n /* Bordes redondeados */\n padding: 5px 5px;\n /* Espaciado interno */\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n /* Sombra suave */\n --ion-border-color: transparent;\n /* Quita cualquier borde por defecto */\n}\n\n:host ion-input {\n text-align: center;\n color: #F38301;\n --padding-start: 8px;\n}\n\n:host .sdk-metag-custom-footer {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 10px;\n display: flex;\n justify-content: space-between;\n background-color: #ffffff;\n}\n\n:host .sdk-metag-custom-footer ion-button {\n flex: 0 0 48%;\n}\n\n:host .sdk-metag-custom-footer .sdk-metag-left-button {\n max-width: 140px;\n color: black;\n --background: white;\n --color: #82298F;\n --border-radius: 20px;\n --border-color: white;\n margin-right: auto;\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.0);\n}\n\n:host .sdk-metag-custom-footer .sdk-metag-right-button {\n margin-left: auto;\n}\n\n.sdk-metag-tutorial-head {\n padding-top: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: black;\n}\n\n.sdk-metag-center-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 60vh;\n /* Ajusta este valor si quieres m\u00E1s o menos espacio vertical */\n width: 100%;\n}\n\n.sdk-metag-tutorial-title {\n text-align: center;\n}\n\n.sdk-metag-rounded-input ion-input {\n font-size: 14px;\n /* Tama\u00F1o de texto */\n color: #333;\n /* Color del texto */\n}\n\n.sdk-metag-rounded-input::part(native) {\n background: transparent;\n /* Fondo transparente para evitar conflictos */\n}\n\n.sdk-metag-p-info {\n font-weight: bold;\n color: #714e93\n}\n\n.sdk-metag-custom-button {\n --background: var(--purple-primary, #82298F) !important;\n --background-hover: var(--purple-secondary, #2b0d30) !important;\n --background-activated: var(--purple-secondary, #2b0d30) !important;\n --color: #ffffff !important;\n --border-radius: 20px !important;\n --padding-top: 10px !important;\n --padding-bottom: 10px !important;\n --box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.25) !important;\n text-transform: none;\n pointer-events: auto;\n\n}\n\n//blur effect\n\n.sdk-metag-blur-effect {\n filter: blur(5px);\n pointer-events: none;\n}\n\n.sdk-metag-blur-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.7);\n z-index: 999;\n filter: blur(5px);\n}\n\n.sdk-metag-boton-personalizado {\n background-color: #4caf50;\n /* Verde, por ejemplo */\n color: white;\n font-size: 16px;\n}\n\n.sdk-metag-version {\n position: fixed;\n bottom: 10px;\n right: 10px;\n font-size: 12px;\n z-index: 1000;\n background: #f4f6fc !important;\n padding: 10px 15px !important;\n border-radius: 20px !important;\n}\n\n.sdk-metag-button-debug {\n --background: #ff4081;\n --color: #fff;\n}\n\n\n.sdk-metag-wrapper-no-internet {\n background-color: #fff;\n height: 100vh;\n display: flex;\n justify-content: center; /* centra en eje vertical */\n align-items: center; /* centra en eje horizontal */\n padding: 40px;\n background-image: url('assets/imagesIdvision/background.png') !important;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n}\n\n.sdk-metag-content-no-internet {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 16px;\n}\n\n.sdk-metag-title-no-internet {\n color: #000;\n font-size: 32px;\n font-weight: bold;\n}\n\n.sdk-metag-icon-no-internet {\n width: 125px;\n display: block;\n margin-top: 25px;\n}\n\n.sdk-metag-description-no-internet {\n margin-top: 25px;\n font-size: 22px;\n color: #000;\n line-height: 1.5;\n text-align: center;\n}\n\n.sdk-metag-no-border {\n --border-width: 0 !important;\n}\n\n.sdk-metag-confirmation-screen {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 80vh; // Se integra al 80% de la vista\n padding: 25px;\n box-sizing: border-box;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-color: white;\n gap: 20px; // Espacio entre elementos\n}\n\n.sdk-metag-image-confirmation {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n}\n\n.sdk-metag-image-confirmation img {\n max-width: 300px; // Reducido de 500px a 300px\n width: 40%; // Reducido de 80% a 50%\n height: auto;\n}\n\n.sdk-metag-button-container {\n width: 100%;\n display: flex;\n justify-content: center;\n padding: 0 10px;\n\n ion-button {\n width: 90%;\n max-width: 300px;\n }\n}\n\n\n.sdk-metag-close-button {\n position: absolute;\n top: 12px;\n right: 12px;\n z-index: 1000;\n font-size: 15px;\n --color: #888;\n}\n\n.sdk-metag-p-margin {\n margin-top: 50px !important;\n}\n\n.content {\n background-color: #ffffff;\n --background: #ffffff;\n}\n\n/* HEAD */\n.head {\n padding: 20px;\n}\n\n.head-title {\n font-size: 23px;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n}\n\n.description {\n text-align: center;\n margin-top: 25px;\n font-size: 14px;\n margin-bottom: 25px;\n}\n\n.head-subtitle {\n text-align: justify;\n margin-top: 25px;\n font-size: 14px;\n}\n\n.head-dpi {\n margin-top: 25px;\n //background-color: #f4f6fc;\n border-radius: 10px;\n --ion-border-color: transparent;\n //padding: 5px 5px;\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n --background: #f4f6fc !important;\n\n ion-input {\n text-align: center;\n color: #F38301;\n font-weight: 500;\n font-size: 19px;\n }\n}\n\n.instructions {\n}\n\n.instruction {\n margin: 0 !important;\n}\n\n.instruction-img {\n width: 100px;\n max-width: 100px;\n}\n\n.instruction-description {\n font-size: 13px;\n text-align: justify;\n padding-right: 15px;\n}\n\n.action-button {\n width: 300px;\n max-width: 300px;\n margin: 25px auto;\n --background: #82298F;\n --color: #ffffff;\n font-weight: bold;\n --border-radius: 20px;\n --box-shadow: none;\n}\n\n.exit-button {\n --background: transparent !important;\n --color: #F38301 !important;\n}\n\n.action-button:hover {\n --background: #82298F;\n}\n\n.action-button:active {\n --background: #82298F;\n}\n\n/* Contenedor padre */\n.card-wrapper {\n perspective: 1000px;\n margin: 40px;\n}\n\n/* Tarjeta */\n.card {\n position: relative;\n width: 100%;\n height: 350px;\n transform-style: preserve-3d;\n transition: transform 1s ease-in-out;\n cursor: pointer;\n}\n\n/* Cuando hace flip */\n.card.flip {\n transform: rotateY(180deg);\n}\n\n/* Lados */\n.side {\n position: absolute;\n width: 100%;\n height: 100%;\n backface-visibility: hidden;\n\n img {\n transform: rotate(270deg);\n width: 100%;\n object-fit: contain;\n }\n}\n\n.front {\n z-index: 2;\n}\n\n.back {\n transform: rotateY(180deg);\n}\n\n.avatar-wrapper{\n width:100%;\n display:flex;\n justify-content:center;\n margin-bottom:20px;\n}\n\n.avatar-container{\n position:relative;\n width:300px;\n height:300px;\n margin-bottom: 25px;\n}\n\n.avatar{\n width:100%;\n height:100%;\n border-radius:50%;\n object-fit:cover;\n padding: 35px;\n}\n\n.lottie-container{\n position:absolute;\n inset:0;\n}\n\nion-progress-bar{\n height:7px;\n border-radius:10px;\n --progress-background: #F38301;\n}\n\n.slide-six {\n}\n\n\n.status-container {\n text-align: center !important;\n margin-top: 20px;\n min-height: 30px;\n}\n\n.status-text {\n text-align: center !important;\n color: #444;\n font-size: 14px !important;\n opacity: 0;\n transform: translateY(10px);\n transition: all .4s ease;\n}\n\n.status-text.show {\n opacity: 1;\n transform: translateY(0);\n}\n\n.button-success {\n animation: checkPop 0.4s ease;\n}\n\n@keyframes checkPop{\n\n 0%{\n transform: scale(0);\n opacity:0;\n }\n\n 60%{\n transform: scale(1.2);\n }\n\n 100%{\n transform: scale(1);\n opacity:1;\n }\n\n}\n"] }]
|
|
1529
|
+
args: [{ selector: 'app-id-vision', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [IonicModule, CommonModule, HttpClientModule, CameraSecurityBlockComponent], providers: [DpiService, ConfigurationService, ValidationService, NavigationService, ProcessingService], encapsulation: ViewEncapsulation.Emulated, template: "<ion-content *ngIf=\"isInitCameraBlocked\" class=\"content\">\n <app-camera-security-block\n [title]=\"'Bloqueo por seguridad'\"\n [description]=\"'Detectamos una c\u00E1mara virtual o no permitida durante la inicializaci\u00F3n del SDK.'\"\n [reason]=\"initCameraBlockReason\"\n [exitLabel]=\"'Entiendo'\"\n (exitPressed)=\"handleInitSecurityExit()\">\n </app-camera-security-block>\n</ion-content>\n\n<ion-content class=\"content\" [style.display]=\"hasInternet && !isInitCameraBlocked ? 'block' : 'none'\">\n\n <swiper-container *ngIf=\"!simpleProcess\" init=\"false\" class=\"custom-swiper\" #swiperContainer\n (swiperslidechange)=\"onSlideChange()\">\n\n <!-- \uD83D\uDD39 PASO 1: Verificaci\u00F3n de Identidad (Est\u00E1tico) -->\n <swiper-slide *ngIf=\"!simpleProcess\">\n <div class=\"slide-one\">\n <div class=\"head\">\n <div class=\"head-title\">Verifiquemos tu identidad</div>\n <div class=\"head-subtitle\">\n Por favor confirma tu n\u00FAmero de identificaci\u00F3n (DPI) y sigue las instrucciones.\n </div>\n\n <ion-item class=\"head-dpi\">\n <ion-input #dpi type=\"number\" disabled=\"true\" placeholder=\"0000000000000\"></ion-input>\n </ion-item>\n </div>\n\n <ion-grid class=\"instructions\">\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/documentsImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">\n Ten a la mano tu DPI y sube una foto del frente y reverso de tu documento.\n </div>\n </ion-col>\n </ion-row>\n\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">\n Graba un video corto, mant\u00E9n tu rostro dentro del c\u00EDrculo y evita moverte.\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <ion-button\n class=\"action-button\"\n expand=\"block\"\n (click)=\"handleClick()\">\n Empecemos\n </ion-button>\n </div>\n </swiper-slide>\n\n <!-- \uD83D\uDD39 PASOS INTERMEDIOS: Se generan din\u00E1micamente seg\u00FAn el `order` -->\n <swiper-slide *ngFor=\"let step of validationConfig\">\n <div class=\"slide-two\" [ngSwitch]=\"step.type\">\n <!--Acuerdo de video-->\n <div *ngSwitchCase=\"1\" [ngClass]=\"{'sdk-metag-blur-effect': simpleProcess}\">\n <div class=\"head\">\n <div class=\"head-title\">Acuerdo de v\u00EDdeo</div>\n <div class=\"head-subtitle\">Graba un video corto para completar tu proceso de identificaci\u00F3n.</div>\n </div>\n <ion-grid class=\"instructions\">\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/Foco.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">Tu rostro debe de estar iluminado sin sombra y sin reflejos.\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">No uses anteojos, ni sombreros, tu rostro debe estar visible.</div>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Abrir la c\u00E1mara</ion-button>\n\n </div>\n <!-- \uD83D\uDD39 DPI Frontal -->\n <div *ngSwitchCase=\"2\">\n <div class=\"head\">\n <div class=\"head-title\">DPI frontal</div>\n <div class=\"head-subtitle\">\n Toma una foto de la parte frontal de tu documento,\n asegurate que este dentro del recuadro, evita sombras y reflejos.\n </div>\n </div>\n\n <div class=\"card-wrapper\">\n <div class=\"card\">\n <div class=\"side front\">\n <img src=\"assets/imagesIdvision/dpi_m_f.png\" alt=\"Frontal\">\n </div>\n </div>\n </div>\n <!--<div class=\"sdk-metag-dpi-container\">\n <img src=\"assets/imagesIdvision/dpi-front-1.png\" alt=\"\"/>\n <img src=\"assets/imagesIdvision/dpi_m_f.png\" alt=\"\"/>\n </div>-->\n\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Tomar foto</ion-button>\n </div>\n\n <!-- \uD83D\uDD39 DPI Trasero -->\n <div *ngSwitchCase=\"3\">\n <div class=\"head\">\n <div class=\"head-title\">DPI reverso</div>\n <div class=\"head-subtitle\">\n Voltea tu documento y toma una foto del reverso de tu documento,\n asegurate que este dentro del recuadro, evita sombras y reflejos.\n </div>\n </div>\n\n <div class=\"card-wrapper\">\n <div class=\"card\" [class.flip]=\"flip\">\n <div class=\"side front\">\n <img src=\"assets/imagesIdvision/dpi_m_f.png\" alt=\"Frontal\">\n </div>\n <div class=\"side back\">\n <img src=\"assets/imagesIdvision/dpi_t.png\" alt=\"Reverso\">\n </div>\n </div>\n </div>\n\n <!--<div class=\"sdk-metag-dpi-container\">\n <img src=\"assets/imagesIdvision/dpi-back-1.png\" alt=\"\"/>\n <img src=\"assets/imagesIdvision/dpi_t.png\" alt=\"\"/>\n </div>-->\n <ion-button [disabled]=\"waitFlip\" class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Tomar foto\n </ion-button>\n </div>\n\n <!-- \uD83D\uDD39 Video Selfie -->\n <div *ngSwitchCase=\"4\">\n <div class=\"head\">\n <div class=\"head-title\">Prueba de vida</div>\n <div class=\"head-subtitle\">Graba un video corto para completar tu proceso de identificaci\u00F3n.</div>\n </div>\n <ion-grid class=\"instructions\">\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/Foco.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">Tu rostro debe de estar iluminado sin sombra y sin reflejos.</div>\n </ion-col>\n </ion-row>\n <ion-row class=\"instruction\">\n <ion-col size=\"3\">\n <img class=\"instruction-img\" src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </ion-col>\n <ion-col>\n <div class=\"instruction-description\">No uses anteojos, ni sombreros, tu rostro debe estar visible.</div>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"step.action()\">Abrir la c\u00E1mara</ion-button>\n </div>\n <!-- Photo Selfie -->\n <!-- TODO Se debera cambiar a 5, se dejo 1 por acuerdo de video -->\n <div *ngSwitchCase=\"5\">\n <div class=\"sdk-metag-head\">\n <h2 class=\"sdk-metag-h-title\">Foto Selfie</h2>\n <p class=\"sdk-metag-p-justify\">Toma una foto para completar tu proceso de identificaci\u00F3n.</p>\n </div>\n <ion-grid class=\"sdk-metag-verify-container\">\n <ion-row>\n <ion-row>\n <div class=\"sdk-metag-image-container\">\n <img src=\"assets/imagesIdvision/Foco.png\" alt=\"\"/>\n </div>\n <div class=\"sdk-metag-container-text\">\n <p>Si est\u00E1s en interiores, aseg\u00FArate de que la luz est\u00E9 frente a ti, no detr\u00E1s.</p>\n </div>\n </ion-row>\n <ion-row>\n <div class=\"sdk-metag-image-container\">\n <img src=\"assets/imagesIdvision/rostroImage.png\" alt=\"\"/>\n </div>\n <div class=\"sdk-metag-container-text\">\n <p>Aseg\u00FArate de que tu rostro sea visible y de no usar anteojos ni sombreros.</p>\n </div>\n </ion-row>\n </ion-row>\n </ion-grid>\n <div class=\"sdk-metag-fixed-footer\">\n <ion-button class=\"sdk-metag-custom-button\" expand=\"block\" (click)=\"step.action()\">Abrir la c\u00E1mara\n </ion-button>\n </div>\n </div>\n <div *ngSwitchCase=\"6\">\n <div class=\"slide-six\">\n <div class=\"head\">\n <div class=\"head-title\">Verificando identidad</div>\n </div>\n\n <div class=\"avatar-wrapper\">\n\n <div class=\"avatar-container\">\n <img src=\"{{image}}\" class=\"avatar\">\n <div class=\"lottie-container\"></div>\n\n <!--<div class=\"description\">Por favor, espera un momento...</div>-->\n\n <div class=\"status-container\">\n <!--<ion-icon *ngIf=\"progress === 1\" name=\"checkmark-circle\" class=\"success-check\"></ion-icon>-->\n <p class=\"status-text\"\n [class.show]=\"showText\">\n {{ currentText }}\n </p>\n </div>\n\n\n <ion-progress-bar [value]=\"progress\"></ion-progress-bar>\n </div>\n </div>\n <ion-button\n style=\"margin: 100px auto 0 !important;\"\n *ngIf=\"progress === 1 && comparsionStatus === 'success'\"\n class=\"action-button button-success\"\n expand=\"block\"\n (click)=\"finalizar()\">\n Continuar\n </ion-button>\n <ion-button\n style=\"margin: 100px auto 0 !important;\"\n *ngIf=\"progress === 1 && comparsionStatus === 'error'\"\n class=\"action-button button-success\"\n expand=\"block\"\n (click)=\"handleExit()\">\n Salir\n </ion-button>\n </div>\n </div>\n <div *ngSwitchDefault>\n <h2>Paso desconocido</h2>\n </div>\n </div>\n </swiper-slide>\n\n <swiper-slide>\n <div class=\"slide-third\">\n <div class=\"head\" *ngIf=\"isValid\">\n <div class=\"head-title\">Informaci\u00F3n procesada de manera correcta</div>\n </div>\n <div class=\"head\" *ngIf=\"!isValid\">\n <div class=\"head-title\">Ocurri\u00F3 un error al procesar la informaci\u00F3n</div>\n </div>\n <div class=\"sdk-metag-image-confirmation\">\n <img src=\"assets/imagesIdvision/blue-check.png\" alt=\"Check morado\"/>\n </div>\n <ion-button class=\"action-button\" expand=\"block\" (click)=\"handleExit()\">Continuar</ion-button>\n </div>\n </swiper-slide>\n </swiper-container>\n\n <div class=\"sdk-metag-version\">{{ versionSDK }} {{ configEnv.show_label ? configEnv.env_name : '' }}</div>\n\n <ion-fab vertical=\"top\" horizontal=\"end\" slot=\"fixed\" *ngIf=\"showDebug\">\n <ion-fab-button class=\"sdk-metag-button-debug\" (click)=\"copyProccess()\">\n <ion-icon name=\"bug-outline\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n</ion-content>\n<!-- pantalla para cuando no exista internet -->\n<ion-content [style.display]=\"!hasInternet && !isInitCameraBlocked ? 'block' : 'none'\">\n <div class=\"sdk-metag-wrapper-no-internet\">\n <div class=\"sdk-metag-content-no-internet\">\n <h2 class=\"sdk-metag-title-no-internet\">Error de conexi\u00F3n</h2>\n <img src=\"assets/imagesIdvision/no-internet.svg\" alt=\"Error conexi\u00F3n img\" class=\"sdk-metag-icon-no-internet\"/>\n <p class=\"sdk-metag-description-no-internet\">\n No pudimos cargar la p\u00E1gina. <br>\n Verifica tu internet y prueba de nuevo.\n </p>\n </div>\n </div>\n</ion-content>\n", styles: ["// ============================================\n// ESTILOS AISLADOS DEL SDK - NO AFECTAN AL PADRE\n// ============================================\n// Usamos :host para encapsular todo dentro del componente\n// y evitar que los estilos globales del padre nos afecten\n\n:host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n\n // Reset de estilos globales del padre\n * {\n box-sizing: border-box;\n }\n}\n\n.sdk-metag-content {\n padding: 10px;\n align-items: center;\n justify-content: center;\n height: 90vh;\n background-color: #fff;\n font-size: 18px;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n// Cuando es simpleProcess, levanta el contenido un 10%\n.sdk-metag-content-simple-process {\n margin-top: 10vh;\n height: 90vh;\n}\n\n.sdk-metag-h-title {\n font-size: 1.5em;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n margin-top: 20px;\n}\n\n:host p {\n font-size: 1em;\n color: #666;\n text-align: center;\n margin: 0;\n}\n\n:host ion-grid {\n margin-top: 20px;\n}\n\n:host ion-row {\n margin: 15px 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n:host ion-col {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n:host ion-icon {\n font-size: 3em;\n color: #ff8c00;\n margin-bottom: 10px;\n}\n\n.sdk-metag-container-text {\n text-align: justify !important;\n width: 180px;\n}\n\n:host p {\n text-align: start;\n}\n\n.sdk-metag-p-center {\n text-align: center;\n}\n\n.sdk-metag-p-justify {\n text-align: start;\n}\n\n.sdk-metag-head {\n padding: 20px;\n margin-top: 20px;\n margin-bottom: 80px;\n}\n\n\n.sdk-metag-verify-container {\n // padding: 60px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 40%; // Ocupa todo el espacio disponible en el ion-content\n text-align: center;\n //background-color: black;\n}\n\n.sdk-metag-fixed-footer {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 0px 10px 25px 10px;\n // background-color: black; // Color de fondo, opcional\n // box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); // Sombra suave para que resalte\n\n ion-button {\n width: 90%;\n max-width: 300px;\n margin: 0 auto;\n background-color: #ffcc00;\n color: #ffffff;\n font-weight: bold;\n border-radius: 20px;\n\n &:hover {\n background-color: #ffb300;\n }\n\n &:active {\n background-color: #e6a800;\n }\n }\n}\n\n.sdk-metag-dpi-container {\n display: flex;\n //width: 100%;\n justify-content: center;\n align-items: center;\n height: 45vh;\n img {\n width: 90%;\n transform: rotate(270deg);\n }\n}\n\n.sdk-metag-dpi-image {\n width: 200px;\n}\n\n.sdk-metag-image-container {\n width: 100px;\n max-width: 90px;\n}\n\n.sdk-metag-col-confirmation {\n margin-top: 100px;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n /* Ajusta el espacio entre los elementos */\n}\n\n.sdk-metag-image-item {\n margin-top: 50px;\n padding-top: 70px;\n}\n\n.sdk-metag-font-confirmation {\n font-size: 26px;\n text-align: center;\n // color: #005da9;\n color: #82298F;\n font-weight: bold;\n}\n\n\n.sdk-metag-rounded-input {\n margin-top: 15px;\n background-color: #f4f6fc;\n /* Color de fondo suave */\n border-radius: 10px;\n /* Bordes redondeados */\n padding: 5px 5px;\n /* Espaciado interno */\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n /* Sombra suave */\n --ion-border-color: transparent;\n /* Quita cualquier borde por defecto */\n}\n\n:host ion-input {\n text-align: center;\n color: #F38301;\n --padding-start: 8px;\n}\n\n:host .sdk-metag-custom-footer {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 10px;\n display: flex;\n justify-content: space-between;\n background-color: #ffffff;\n}\n\n:host .sdk-metag-custom-footer ion-button {\n flex: 0 0 48%;\n}\n\n:host .sdk-metag-custom-footer .sdk-metag-left-button {\n max-width: 140px;\n color: black;\n --background: white;\n --color: #82298F;\n --border-radius: 20px;\n --border-color: white;\n margin-right: auto;\n --box-shadow: 0 2px 6px 0 rgb(0, 0, 0, 0.0);\n}\n\n:host .sdk-metag-custom-footer .sdk-metag-right-button {\n margin-left: auto;\n}\n\n.sdk-metag-tutorial-head {\n padding-top: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: black;\n}\n\n.sdk-metag-center-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 60vh;\n /* Ajusta este valor si quieres m\u00E1s o menos espacio vertical */\n width: 100%;\n}\n\n.sdk-metag-tutorial-title {\n text-align: center;\n}\n\n.sdk-metag-rounded-input ion-input {\n font-size: 14px;\n /* Tama\u00F1o de texto */\n color: #333;\n /* Color del texto */\n}\n\n.sdk-metag-rounded-input::part(native) {\n background: transparent;\n /* Fondo transparente para evitar conflictos */\n}\n\n.sdk-metag-p-info {\n font-weight: bold;\n color: #714e93\n}\n\n.sdk-metag-custom-button {\n --background: var(--purple-primary, #82298F) !important;\n --background-hover: var(--purple-secondary, #2b0d30) !important;\n --background-activated: var(--purple-secondary, #2b0d30) !important;\n --color: #ffffff !important;\n --border-radius: 20px !important;\n --padding-top: 10px !important;\n --padding-bottom: 10px !important;\n --box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.25) !important;\n text-transform: none;\n pointer-events: auto;\n\n}\n\n//blur effect\n\n.sdk-metag-blur-effect {\n filter: blur(5px);\n pointer-events: none;\n}\n\n.sdk-metag-blur-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.7);\n z-index: 999;\n filter: blur(5px);\n}\n\n.sdk-metag-boton-personalizado {\n background-color: #4caf50;\n /* Verde, por ejemplo */\n color: white;\n font-size: 16px;\n}\n\n.sdk-metag-version {\n position: fixed;\n bottom: 10px;\n right: 10px;\n font-size: 12px;\n z-index: 1000;\n background: #f4f6fc !important;\n padding: 10px 15px !important;\n border-radius: 20px !important;\n}\n\n.sdk-metag-button-debug {\n --background: #ff4081;\n --color: #fff;\n}\n\n\n.sdk-metag-wrapper-no-internet {\n background-color: #fff;\n height: 100vh;\n display: flex;\n justify-content: center; /* centra en eje vertical */\n align-items: center; /* centra en eje horizontal */\n padding: 40px;\n background-image: url('assets/imagesIdvision/background.png') !important;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n}\n\n.sdk-metag-content-no-internet {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 16px;\n}\n\n.sdk-metag-title-no-internet {\n color: #000;\n font-size: 32px;\n font-weight: bold;\n}\n\n.sdk-metag-icon-no-internet {\n width: 125px;\n display: block;\n margin-top: 25px;\n}\n\n.sdk-metag-description-no-internet {\n margin-top: 25px;\n font-size: 22px;\n color: #000;\n line-height: 1.5;\n text-align: center;\n}\n\n.sdk-metag-no-border {\n --border-width: 0 !important;\n}\n\n.sdk-metag-confirmation-screen {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 80vh; // Se integra al 80% de la vista\n padding: 25px;\n box-sizing: border-box;\n background-image: url('assets/imagesIdvision/background.png');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-color: white;\n gap: 20px; // Espacio entre elementos\n}\n\n.sdk-metag-image-confirmation {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n}\n\n.sdk-metag-image-confirmation img {\n max-width: 300px; // Reducido de 500px a 300px\n width: 40%; // Reducido de 80% a 50%\n height: auto;\n}\n\n.sdk-metag-button-container {\n width: 100%;\n display: flex;\n justify-content: center;\n padding: 0 10px;\n\n ion-button {\n width: 90%;\n max-width: 300px;\n }\n}\n\n\n.sdk-metag-close-button {\n position: absolute;\n top: 12px;\n right: 12px;\n z-index: 1000;\n font-size: 15px;\n --color: #888;\n}\n\n.sdk-metag-p-margin {\n margin-top: 50px !important;\n}\n\n.content {\n background-color: #ffffff;\n --background: #ffffff;\n}\n\n/* HEAD */\n.head {\n padding: 20px;\n}\n\n.head-title {\n font-size: 23px;\n font-weight: bold;\n color: #F38301;\n text-align: center;\n}\n\n.description {\n text-align: center;\n margin-top: 25px;\n font-size: 14px;\n margin-bottom: 25px;\n}\n\n.head-subtitle {\n text-align: justify;\n margin-top: 25px;\n font-size: 14px;\n}\n\n.head-dpi {\n margin-top: 25px;\n //background-color: #f4f6fc;\n border-radius: 10px;\n --ion-border-color: transparent;\n //padding: 5px 5px;\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n --background: #f4f6fc !important;\n\n ion-input {\n text-align: center;\n color: #F38301;\n font-weight: 500;\n font-size: 19px;\n }\n}\n\n.instructions {\n}\n\n.instruction {\n margin: 0 !important;\n}\n\n.instruction-img {\n width: 100px;\n max-width: 100px;\n}\n\n.instruction-description {\n font-size: 13px;\n text-align: justify;\n padding-right: 15px;\n}\n\n.action-button {\n width: 300px;\n max-width: 300px;\n margin: 25px auto;\n --background: #82298F;\n --color: #ffffff;\n font-weight: bold;\n --border-radius: 20px;\n --box-shadow: none;\n}\n\n.exit-button {\n --background: transparent !important;\n --color: #F38301 !important;\n}\n\n.action-button:hover {\n --background: #82298F;\n}\n\n.action-button:active {\n --background: #82298F;\n}\n\n/* Contenedor padre */\n.card-wrapper {\n perspective: 1000px;\n //margin: 40px;\n margin: 25px;\n}\n\n/* Tarjeta */\n.card {\n position: relative;\n width: 100%;\n height: 350px;\n transform-style: preserve-3d;\n transition: transform 1s ease-in-out;\n cursor: pointer;\n}\n\n/* Cuando hace flip */\n.card.flip {\n transform: rotateY(180deg);\n}\n\n/* Lados */\n.side {\n position: absolute;\n width: 100%;\n height: 100%;\n backface-visibility: hidden;\n\n img {\n transform: rotate(270deg);\n width: 100%;\n object-fit: contain;\n }\n}\n\n.front {\n z-index: 2;\n}\n\n.back {\n transform: rotateY(180deg);\n}\n\n.avatar-wrapper{\n width:100%;\n display:flex;\n justify-content:center;\n margin-bottom:20px;\n}\n\n.avatar-container{\n position:relative;\n width:300px;\n height:300px;\n margin-bottom: 25px;\n}\n\n.avatar{\n width:100%;\n height:100%;\n border-radius:50%;\n object-fit:cover;\n padding: 35px;\n}\n\n.lottie-container{\n position:absolute;\n inset:0;\n}\n\nion-progress-bar{\n height:7px;\n border-radius:10px;\n --progress-background: #F38301;\n}\n\n.slide-six {\n}\n\n\n.status-container {\n text-align: center !important;\n margin-top: 20px;\n min-height: 30px;\n}\n\n.status-text {\n text-align: center !important;\n color: #444;\n font-size: 14px !important;\n opacity: 0;\n transform: translateY(10px);\n transition: all .4s ease;\n}\n\n.status-text.show {\n opacity: 1;\n transform: translateY(0);\n}\n\n.button-success {\n animation: checkPop 0.4s ease;\n}\n\n@keyframes checkPop{\n\n 0%{\n transform: scale(0);\n opacity:0;\n }\n\n 60%{\n transform: scale(1.2);\n }\n\n 100%{\n transform: scale(1);\n opacity:1;\n }\n\n}\n"] }]
|
|
1530
1530
|
}], () => [{ type: i1.ModalController }, { type: i1.AlertController }, { type: i1.Platform }, { type: i2.ModalDpiServices }, { type: i3.SdkCommunicationService }, { type: i1.NavController }, { type: i0.ChangeDetectorRef }, { type: i1.ToastController }, { type: i1.LoadingController }, { type: i4.ConfigurationService }, { type: i5.ValidationService }, { type: i6.NavigationService }, { type: i7.ProcessingService }, { type: i8.DpiService }, { type: i0.ElementRef }, { type: i9.VirtualCameraDetectionService }], { dpi: [{
|
|
1531
1531
|
type: ViewChild,
|
|
1532
1532
|
args: ['dpi', { static: false }]
|
|
@@ -65,7 +65,6 @@ export class DpiService {
|
|
|
65
65
|
ctor: file?.constructor?.name,
|
|
66
66
|
});
|
|
67
67
|
try {
|
|
68
|
-
console.log('[DpiService.fileToBase64] arrayBuffer start');
|
|
69
68
|
const arrayBuffer = await file.arrayBuffer();
|
|
70
69
|
const bytes = new Uint8Array(arrayBuffer);
|
|
71
70
|
const chunkSize = 0x8000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dpi-service.service.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/services/dpi/dpi-service.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dpi-service.service.js","sourceRoot":"","sources":["../../../../../../../src/app/pages/id-vision/services/dpi/dpi-service.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "metag-sdk-ionic",
|
|
3
|
-
"version": "1.3.0-security-0.0.
|
|
3
|
+
"version": "1.3.0-security-0.0.4",
|
|
4
4
|
"author": "FGE",
|
|
5
5
|
"description": "SDK de MetaG para validación de documentos y prueba de vida con Angular e Ionic.",
|
|
6
6
|
"homepage": "https://ionicframework.com/",
|