@authme/identity-verification 2.8.24 → 2.8.26
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/assets/locale/en_US.json +10 -5
- package/assets/locale/ja_JP.json +11 -6
- package/assets/locale/zh_Hant_TW.json +11 -6
- package/assets/styles/style.css +53 -45
- package/index.cjs +129 -96
- package/index.js +130 -97
- package/package.json +6 -6
- package/src/lib/ui/ocr.ui.d.ts +3 -0
package/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import 'core-js/modules/es.promise.js';
|
|
|
7
7
|
import { getTranslateInstance, EventListenerService, TrackingEvent, generateStatus, StatusDescription, AuthmeError, ErrorCode, Feature, StatusEvent, StatusView, StatusAction, setRequestLoggingFunc, setAccessToken, getCustomerState } from '@authme/core';
|
|
8
8
|
import { EAuthMeFASServiceStatus, EAuthMeIDCardAntiFraudStage as EAuthMeIDCardAntiFraudStage$1, EAuthMeCardClass as EAuthMeCardClass$1, AuthmeFunctionModule, MlEngine, EngineModule, EAuthMeEngineReturnCode, AuthmeEngineModuleBase } from '@authme/engine';
|
|
9
9
|
import { IdRecognitionCardType, CountryCode, EAuthMeCardClass, EAuthMeIDCardAntiFraudStatus, EAuthMeIDCardAntiFraudStage, thicknessDefaultConfig, mapCardtypeToAuthmeClass, getRecognitionColumnOrder, cardTypeTitle, cardTypeConfirmTitle, cardTypeHeader, EAuthMeCardOCRStatus, EAuthMeMRZServiceStatus, saveExtraDoc, initScanDocumentResourceBase64, MRZService, option, themeUI, initScan, initScanDocument, ResourceImageType, uploadFrameBase64, finishScanDocument, CardOCR, IdCardAntiFraudService, twoWayAuthmeCardClassMap, RecognitionFileType, recognizeBase64, getCardSubTypes, getCardTypes, confirmScan } from '@authme/id-recognition';
|
|
10
|
-
import { getCssVariable, RGBToLottieColor, colorToRGB, Storage, useState, uiThemeText, uiThemeHint, clearCanvas, getImageData, isMobile, hidePopup, showPopup, waitTime, TIME_UNIT, AuthmeError as AuthmeError$1, ErrorCode as ErrorCode$1, uiThemeButton, uiThemeSmallButton, requestCamera, showElement, asyncOnLineShowErrorMessage, getCanvasSize, startSpinner, stopSpinner, themeConfigDefault, fontWeight, hideElement, dataURItoBlob, showErrorMessage, checkOnlineStatus, dropMenu, hideErrorMessage, UintArrayToBlob, isIphone14proOrProMax, cropByRatio, switchCamera, asyncShowPopup, retryPromiseWithCondition, asyncShowErrorMessage, uploadModal, backgroundRequest, debugTools, RUN_FUNCTION_NAME, STORAGE_KEY, splitResult, DEVICE_TYPE, combineResult, startLoadingSDK, stopLoadingSDK } from '@authme/util';
|
|
10
|
+
import { getCssVariable, RGBToLottieColor, colorToRGB, Storage, useState, uiThemeText, uiThemeHint, clearCanvas, getImageData, isMobile, hidePopup, showPopup, waitTime, TIME_UNIT, AuthmeError as AuthmeError$1, ErrorCode as ErrorCode$1, uiThemeButton, uiThemeSmallButton, requestCamera, showElement, asyncOnLineShowErrorMessage, getCanvasSize, startSpinner, stopSpinner, themeConfigDefault, uiThemeDirection, fontWeight, hideElement, dataURItoBlob, showErrorMessage, checkOnlineStatus, dropMenu, hideErrorMessage, UintArrayToBlob, isIphone14proOrProMax, cropByRatio, switchCamera, asyncShowPopup, retryPromiseWithCondition, asyncShowErrorMessage, uploadModal, backgroundRequest, debugTools, RUN_FUNCTION_NAME, STORAGE_KEY, splitResult, DEVICE_TYPE, combineResult, startLoadingSDK, stopLoadingSDK } from '@authme/util';
|
|
11
11
|
import { mergeMap, animationFrames, filter, tap, map, from, catchError, EMPTY, of, merge, fromEvent, concatAll, takeUntil, Subject, defer, throttleTime, switchMap, raceWith, concatMap, throwError, finalize, timer, Observable, take, interval, mapTo, firstValueFrom, shareReplay, switchMapTo, takeWhile as takeWhile$1, race } from 'rxjs';
|
|
12
12
|
import 'core-js/modules/es.regexp.to-string.js';
|
|
13
13
|
import { FasRecognitionResult, EAuthMeFASServiceStage, FasService, LivenessAPI, EAuthMeMouthStatus, LivenessResultStatus } from '@authme/liveness';
|
|
@@ -9917,7 +9917,8 @@ const scan = params => {
|
|
|
9917
9917
|
const [r, g, b] = lottieColor.map(c => parseFloat(c.toFixed(3)));
|
|
9918
9918
|
const lottieColorGradient = authmeScannningGradient ? RGBToLottieColor(colorToRGB(authmeScannningGradient)) : [];
|
|
9919
9919
|
const [rGradient, gGradient, bGradient] = lottieColorGradient.map(c => parseFloat(c.toFixed(3)));
|
|
9920
|
-
const opacity =
|
|
9920
|
+
// const opacity = params?.opacity ? params.opacity * 100 : 40;
|
|
9921
|
+
const opacity = 0;
|
|
9921
9922
|
const lottieGradient = [0, rGradient, gGradient, bGradient, 0.5, r, g, b, 1, r, g, b, 0, 0.03, 0.5, 0.515, 1, 1];
|
|
9922
9923
|
return {
|
|
9923
9924
|
v: '5.9.2',
|
|
@@ -28856,6 +28857,7 @@ const renderBasicUI = userConfig => {
|
|
|
28856
28857
|
video.playsInline = true;
|
|
28857
28858
|
video.loop = true;
|
|
28858
28859
|
video.setAttribute('webkit-playsinline', '');
|
|
28860
|
+
video.setAttribute('poster', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCAYAAABxLb1rAAAABmJLR0QA/wD/AP+gvaeTAAADKUlEQVR4nO3UMQEAIAzAsIF/zyBjRxMFvXpm5g1A0N0OANhigECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkGCGQZIJBlgECWAQJZBghkGSCQZYBAlgECWQYIZBkgkGWAQJYBAlkfVV0C319akPEAAAAASUVORK5CYII=');
|
|
28859
28861
|
const lottieScreen = document.createElement('div');
|
|
28860
28862
|
lottieScreen.classList.add('lottie-screen');
|
|
28861
28863
|
const pictureIcon = document.createElement('div');
|
|
@@ -29102,7 +29104,6 @@ const renderLivenessUI = config => {
|
|
|
29102
29104
|
};
|
|
29103
29105
|
const createTextTitle = () => {
|
|
29104
29106
|
const ele = document.createElement('div');
|
|
29105
|
-
ele.classList.add('text-title');
|
|
29106
29107
|
return ele;
|
|
29107
29108
|
};
|
|
29108
29109
|
const createTextHint = () => {
|
|
@@ -29128,12 +29129,8 @@ const renderLivenessUI = config => {
|
|
|
29128
29129
|
faceMask.style.setProperty('--authme-liveness-scanner-error-border-width', `${uiThemeConfig.livenessErrorScanFrame.borderWidth}px`);
|
|
29129
29130
|
// text panel
|
|
29130
29131
|
const titleTextPanel = createTextPanel();
|
|
29131
|
-
titleTextPanel.classList.add('title');
|
|
29132
29132
|
const titleText = createTextTitle();
|
|
29133
|
-
//由於setStatusTop會與titile font size 相關,所以直接在這邊用innerStyle修改,避免未來CSS污染導致setStatusTop失效
|
|
29134
|
-
titleText.style.fontSize = `${MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
|
|
29135
29133
|
const statusTextPanel = createTextPanel();
|
|
29136
|
-
statusTextPanel.classList.add('status');
|
|
29137
29134
|
const statusText = createTextHint();
|
|
29138
29135
|
titleTextPanel.appendChild(titleText);
|
|
29139
29136
|
statusTextPanel.appendChild(statusText);
|
|
@@ -29141,22 +29138,16 @@ const renderLivenessUI = config => {
|
|
|
29141
29138
|
config.videoContainer.appendChild(statusTextPanel);
|
|
29142
29139
|
//Statement
|
|
29143
29140
|
const statementContainer = document.createElement('div');
|
|
29144
|
-
statementContainer.classList.add('statement');
|
|
29145
29141
|
uiThemeText(statementContainer, uiThemeConfig.bodyThreeDarkMode);
|
|
29146
29142
|
statementContainer.textContent = translateService.translate('sdk.general.footer');
|
|
29147
29143
|
if (uiThemeConfig.isStatementEnabled) {
|
|
29148
29144
|
config.videoContainer.appendChild(statementContainer);
|
|
29149
29145
|
}
|
|
29150
29146
|
uiThemeText(titleText, uiThemeConfig.titleThree);
|
|
29151
|
-
uiThemeHint(statusText, uiThemeConfig.hint);
|
|
29147
|
+
uiThemeHint(statusText, uiThemeConfig.hint, '15vh');
|
|
29152
29148
|
// Set init text
|
|
29153
29149
|
titleText.textContent = translateService.translate('sdk.liveness.detection.step');
|
|
29154
29150
|
statusText.textContent = translateService.translate('sdk.general.verify.error.noFace');
|
|
29155
|
-
setStatusTextTop({
|
|
29156
|
-
maskHeight,
|
|
29157
|
-
statusTextPanel,
|
|
29158
|
-
titleTextPanel
|
|
29159
|
-
});
|
|
29160
29151
|
return {
|
|
29161
29152
|
statusText,
|
|
29162
29153
|
faceMask,
|
|
@@ -29164,18 +29155,6 @@ const renderLivenessUI = config => {
|
|
|
29164
29155
|
statusTextPanel
|
|
29165
29156
|
};
|
|
29166
29157
|
};
|
|
29167
|
-
const setStatusTextTop = params => {
|
|
29168
|
-
const {
|
|
29169
|
-
maskHeight,
|
|
29170
|
-
maskTop,
|
|
29171
|
-
titleTextPanel,
|
|
29172
|
-
statusTextPanel
|
|
29173
|
-
} = params;
|
|
29174
|
-
const _maskTop = maskTop !== null && maskTop !== void 0 ? maskTop : window.innerHeight / 2 - maskHeight / 2;
|
|
29175
|
-
const _maskBotton = _maskTop + maskHeight;
|
|
29176
|
-
titleTextPanel.style.top = `${_maskTop - MASK_STYLE.MASK_TITLE_MARGIN - MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
|
|
29177
|
-
statusTextPanel.style.top = `${_maskBotton + MASK_STYLE.MASK_TITLE_MARGIN + 60}px`;
|
|
29178
|
-
};
|
|
29179
29158
|
|
|
29180
29159
|
const limitFPS = fps => {
|
|
29181
29160
|
let now = Date.now();
|
|
@@ -29796,12 +29775,6 @@ function startLiveness(config) {
|
|
|
29796
29775
|
height: ellipseHeight,
|
|
29797
29776
|
axisProduct: ellipseWidthRate * ellipseHeightRate
|
|
29798
29777
|
};
|
|
29799
|
-
setStatusTextTop({
|
|
29800
|
-
maskTop: window.innerHeight * fTop,
|
|
29801
|
-
maskHeight: window.innerHeight * (fBottom - fTop),
|
|
29802
|
-
titleTextPanel: uiComponentLiveness.titleTextPanel,
|
|
29803
|
-
statusTextPanel: uiComponentLiveness.statusTextPanel
|
|
29804
|
-
});
|
|
29805
29778
|
})).pipe(switchMap(() => of(null).pipe(
|
|
29806
29779
|
// 明確建立一個 Observable 作為輸入
|
|
29807
29780
|
sendFrame(canvasSizeInfo, canvas, uiComponentBasic.video, config.onFrame, livenessConfig.fasMaxFps, true, 'all', undefined, frameFlags), tap(({
|
|
@@ -30112,19 +30085,25 @@ const renderOCRUI = config => {
|
|
|
30112
30085
|
config.container.classList.add('ocr-container');
|
|
30113
30086
|
// Text
|
|
30114
30087
|
const titleTextPanel = createTextPanel();
|
|
30115
|
-
titleTextPanel.classList.add('title');
|
|
30116
30088
|
const titleText = document.createElement('span');
|
|
30117
|
-
titleText.classList.add('title-text');
|
|
30118
30089
|
titleTextPanel.appendChild(titleText);
|
|
30119
30090
|
const hintText = document.createElement('div');
|
|
30120
|
-
hintText.classList.add('hint-text');
|
|
30121
30091
|
const statusTextPanel = createTextPanel();
|
|
30122
|
-
statusTextPanel.classList.add('status');
|
|
30123
30092
|
const statusText = document.createElement('span');
|
|
30124
|
-
statusText.classList.add('status-text');
|
|
30125
30093
|
statusTextPanel.appendChild(statusText);
|
|
30094
|
+
const directionTextPanel = createTextPanel();
|
|
30095
|
+
directionTextPanel.classList.add('direction-panel');
|
|
30096
|
+
const directionText = document.createElement('span');
|
|
30097
|
+
directionText.classList.add('status-text');
|
|
30098
|
+
directionText.textContent = '';
|
|
30099
|
+
const directionIcon = document.createElement('span');
|
|
30100
|
+
directionIcon.classList.add('direction-icon');
|
|
30101
|
+
// Put icon and text as siblings in directionTextPanel
|
|
30102
|
+
directionTextPanel.appendChild(directionIcon);
|
|
30103
|
+
directionTextPanel.appendChild(directionText);
|
|
30126
30104
|
uiThemeText(titleText, uiThemeConfig.titleOneDarkMode);
|
|
30127
30105
|
uiThemeHint(statusText, uiThemeConfig.hint);
|
|
30106
|
+
uiThemeDirection(directionTextPanel, uiThemeConfig.fraudScanHintText);
|
|
30128
30107
|
//Statement
|
|
30129
30108
|
const statementContainer = document.createElement('div');
|
|
30130
30109
|
statementContainer.classList.add('statement');
|
|
@@ -30158,6 +30137,7 @@ const renderOCRUI = config => {
|
|
|
30158
30137
|
config.videoContainer.appendChild(statementContainer);
|
|
30159
30138
|
}
|
|
30160
30139
|
config.videoContainer.appendChild(statusTextPanel);
|
|
30140
|
+
config.videoContainer.appendChild(directionTextPanel);
|
|
30161
30141
|
config.videoContainer.appendChild(scanAnimationContainer);
|
|
30162
30142
|
config.videoContainer.appendChild(successContainer);
|
|
30163
30143
|
config.videoContainer.appendChild(arrowAnimationContainer);
|
|
@@ -30165,14 +30145,15 @@ const renderOCRUI = config => {
|
|
|
30165
30145
|
// Anti-fraud Instruction
|
|
30166
30146
|
const lottieMask = document.createElement('div');
|
|
30167
30147
|
lottieMask.classList.add('lottie-mask');
|
|
30148
|
+
lottieMask.style.opacity = uiThemeConfig.fraudAnimationLoadingPage.backgroundOpacity;
|
|
30168
30149
|
const antiFraudInstructionContainer = document.createElement('div');
|
|
30169
30150
|
antiFraudInstructionContainer.classList.add('anti-fraud-instruction-container');
|
|
30151
|
+
const antiFraudInstructionAnimationContainer = document.createElement('div');
|
|
30152
|
+
antiFraudInstructionAnimationContainer.classList.add('anti-fraud-instruction-animation-container');
|
|
30170
30153
|
const instructionText = document.createElement('div');
|
|
30171
30154
|
instructionText.classList.add('anti-fraud-instruction-container__text');
|
|
30172
30155
|
instructionText.textContent = translateService.translate('sdk.guard.verify.guide.fraudDescribe');
|
|
30173
30156
|
uiThemeText(instructionText, uiThemeConfig.titleOneDarkMode);
|
|
30174
|
-
const antiFraudInstructionAnimationContainer = document.createElement('div');
|
|
30175
|
-
antiFraudInstructionAnimationContainer.classList.add('anti-fraud-instruction-animation-container');
|
|
30176
30157
|
const btnContainer = document.createElement('div');
|
|
30177
30158
|
btnContainer.classList.add('btn-container');
|
|
30178
30159
|
const confirmBtn = document.createElement('button');
|
|
@@ -30226,6 +30207,9 @@ const renderOCRUI = config => {
|
|
|
30226
30207
|
titleText,
|
|
30227
30208
|
hintText,
|
|
30228
30209
|
statusText,
|
|
30210
|
+
directionTextPanel,
|
|
30211
|
+
directionText,
|
|
30212
|
+
directionIcon,
|
|
30229
30213
|
statusTextPanel,
|
|
30230
30214
|
lottieMask,
|
|
30231
30215
|
arrowAnimationContainer,
|
|
@@ -30383,11 +30367,13 @@ function mirrorPoints(points) {
|
|
|
30383
30367
|
}));
|
|
30384
30368
|
}
|
|
30385
30369
|
const renderOCRMask = params => {
|
|
30370
|
+
const uiThemeConfig = Storage.getItem('themeConfig');
|
|
30386
30371
|
let newCardPoints;
|
|
30387
|
-
let borderColor =
|
|
30388
|
-
let borderOpacity =
|
|
30389
|
-
let borderColorSuccess =
|
|
30390
|
-
let borderOpacitySuccess =
|
|
30372
|
+
let borderColor = uiThemeConfig.scanFrame.undetectedColor;
|
|
30373
|
+
let borderOpacity = uiThemeConfig.scanFrame.opacity;
|
|
30374
|
+
let borderColorSuccess = uiThemeConfig.scanFrame.detectedColor;
|
|
30375
|
+
let borderOpacitySuccess = uiThemeConfig.scanFrame.opacity;
|
|
30376
|
+
const strokeWidth = uiThemeConfig.scanFrame.width;
|
|
30391
30377
|
const {
|
|
30392
30378
|
cardPoints,
|
|
30393
30379
|
container
|
|
@@ -30405,7 +30391,7 @@ const renderOCRMask = params => {
|
|
|
30405
30391
|
svg.style.position = 'absolute';
|
|
30406
30392
|
svg.style.top = '0';
|
|
30407
30393
|
svg.style.left = '0';
|
|
30408
|
-
svg.style.boxShadow = 'rgba(0, 0, 0,
|
|
30394
|
+
svg.style.boxShadow = 'rgba(0, 0, 0, 1) 0 0 0 2000px';
|
|
30409
30395
|
// 創建遮罩
|
|
30410
30396
|
const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');
|
|
30411
30397
|
const mask = document.createElementNS('http://www.w3.org/2000/svg', 'mask');
|
|
@@ -30431,6 +30417,13 @@ const renderOCRMask = params => {
|
|
|
30431
30417
|
pathOfFrame.setAttribute('fill', 'none');
|
|
30432
30418
|
pathOfFrame.setAttribute('stroke', OcrFrame.borderColor);
|
|
30433
30419
|
pathOfFrame.setAttribute('stroke-width', '3');
|
|
30420
|
+
// Create a border path that matches the mask exactly
|
|
30421
|
+
const borderPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
30422
|
+
borderPath.setAttribute('id', 'authme-border-path');
|
|
30423
|
+
borderPath.setAttribute('stroke', borderColor);
|
|
30424
|
+
borderPath.setAttribute('stroke-width', strokeWidth);
|
|
30425
|
+
borderPath.setAttribute('fill', 'none');
|
|
30426
|
+
borderPath.setAttribute('stroke-opacity', borderOpacity.toString());
|
|
30434
30427
|
const setBorderType = params => {
|
|
30435
30428
|
var _a;
|
|
30436
30429
|
const _mirrored = (_a = params.mirrored) !== null && _a !== void 0 ? _a : false;
|
|
@@ -30500,6 +30493,8 @@ const renderOCRMask = params => {
|
|
|
30500
30493
|
maskedRect.setAttribute('fill', 'rgba(0, 0, 0, 0.65)');
|
|
30501
30494
|
maskedRect.setAttribute('mask', 'url(#hole)');
|
|
30502
30495
|
svg.appendChild(maskedRect);
|
|
30496
|
+
// Add the border path that matches the mask
|
|
30497
|
+
svg.appendChild(borderPath);
|
|
30503
30498
|
// 添加SVG到容器
|
|
30504
30499
|
container.appendChild(svg);
|
|
30505
30500
|
const setCardPoints = (_newCardPoints, antiFraud = false, _mirrored = false) => {
|
|
@@ -30536,39 +30531,9 @@ const renderOCRMask = params => {
|
|
|
30536
30531
|
});
|
|
30537
30532
|
return `${acc} ${command} ${_x2 - radius * v.unitVector.x},${_y2 - radius * v.unitVector.y} A 10,10 0 0, ${_mirrored ? '0' : '1'} ${_x2 + radius * vNext.unitVector.x},${_y2 + radius * vNext.unitVector.y}`;
|
|
30538
30533
|
}, '') + ' Z'; // 結尾加上'Z'來關閉路徑
|
|
30539
|
-
newCardPoints.reduce((acc, {
|
|
30540
|
-
x,
|
|
30541
|
-
y
|
|
30542
|
-
}, index) => {
|
|
30543
|
-
var _a, _b;
|
|
30544
|
-
const lineRotio = 2;
|
|
30545
|
-
const previosPoint = (_a = newCardPoints[index - 1]) !== null && _a !== void 0 ? _a : newCardPoints[newCardPoints.length - 1];
|
|
30546
|
-
const nextPoint = (_b = newCardPoints[index + 1]) !== null && _b !== void 0 ? _b : newCardPoints[0];
|
|
30547
|
-
const windowWidth = container.offsetWidth;
|
|
30548
|
-
const windowHeight = container.offsetHeight;
|
|
30549
|
-
const _x1 = windowWidth * previosPoint.x;
|
|
30550
|
-
const _y1 = windowHeight * previosPoint.y;
|
|
30551
|
-
const _x2 = windowWidth * x;
|
|
30552
|
-
const _y2 = windowHeight * y;
|
|
30553
|
-
const _x3 = windowWidth * nextPoint.x;
|
|
30554
|
-
const _y3 = windowHeight * nextPoint.y;
|
|
30555
|
-
const v = new Vector({
|
|
30556
|
-
x: _x1,
|
|
30557
|
-
y: _y1
|
|
30558
|
-
}, {
|
|
30559
|
-
x: _x2,
|
|
30560
|
-
y: _y2
|
|
30561
|
-
});
|
|
30562
|
-
const vNext = new Vector({
|
|
30563
|
-
x: _x2,
|
|
30564
|
-
y: _y2
|
|
30565
|
-
}, {
|
|
30566
|
-
x: _x3,
|
|
30567
|
-
y: _y3
|
|
30568
|
-
});
|
|
30569
|
-
return `${acc} M ${_x2 - lineRotio * radius * v.unitVector.x},${_y2 - lineRotio * radius * v.unitVector.y} L ${_x2 - radius * v.unitVector.x}, ${_y2 - radius * v.unitVector.y} A 10, 10 0 0, ${_mirrored ? '0' : '1'} ${_x2 + radius * vNext.unitVector.x},${_y2 + radius * vNext.unitVector.y} L ${_x2 + lineRotio * radius * vNext.unitVector.x},${_y2 + lineRotio * radius * vNext.unitVector.y} `;
|
|
30570
|
-
}, '');
|
|
30571
30534
|
path.setAttribute('d', d);
|
|
30535
|
+
// Set the same path for the border to match the mask exactly
|
|
30536
|
+
borderPath.setAttribute('d', d);
|
|
30572
30537
|
if (antiFraud) {
|
|
30573
30538
|
setBorderType({
|
|
30574
30539
|
type: borderType,
|
|
@@ -30596,6 +30561,8 @@ const renderOCRMask = params => {
|
|
|
30596
30561
|
if (borderType === 'bordered') {
|
|
30597
30562
|
rectOfFrame.setAttribute('stroke', color);
|
|
30598
30563
|
rectOfFrame.setAttribute('stroke-opacity', opacity.toString());
|
|
30564
|
+
borderPath.setAttribute('stroke', color);
|
|
30565
|
+
borderPath.setAttribute('stroke-opacity', opacity.toString());
|
|
30599
30566
|
} else {
|
|
30600
30567
|
pathOfFrame.setAttribute('stroke', color);
|
|
30601
30568
|
pathOfFrame.setAttribute('stroke-opacity', opacity.toString());
|
|
@@ -32492,6 +32459,9 @@ function startOCR(config) {
|
|
|
32492
32459
|
hintText: document.createElement('div'),
|
|
32493
32460
|
statusText: document.createElement('div'),
|
|
32494
32461
|
statusTextPanel: document.createElement('div'),
|
|
32462
|
+
directionText: document.createElement('div'),
|
|
32463
|
+
directionIcon: document.createElement('div'),
|
|
32464
|
+
directionTextPanel: document.createElement('div'),
|
|
32495
32465
|
lottieMask: document.createElement('div'),
|
|
32496
32466
|
arrowAnimationContainer: document.createElement('div'),
|
|
32497
32467
|
scanAnimationContainer: document.createElement('div'),
|
|
@@ -32558,7 +32528,6 @@ function startOCR(config) {
|
|
|
32558
32528
|
let rotateCard;
|
|
32559
32529
|
let getIsRotateCardAnimating;
|
|
32560
32530
|
let stopAnimate;
|
|
32561
|
-
setHintTextLocale();
|
|
32562
32531
|
setCorrectViewHeight();
|
|
32563
32532
|
let countdownCaptureTimer;
|
|
32564
32533
|
let toastManualCapture = null;
|
|
@@ -32630,6 +32599,7 @@ function startOCR(config) {
|
|
|
32630
32599
|
function startAntiFraud(type, cardType) {
|
|
32631
32600
|
const animateInterval = 2 * TIME_UNIT.SECOND;
|
|
32632
32601
|
const nextAnimateInterval = 6 * TIME_UNIT.SECOND;
|
|
32602
|
+
let eStage = null;
|
|
32633
32603
|
let needDeformationCount = 0;
|
|
32634
32604
|
setStatusEvent$1(StatusEvent.TWID);
|
|
32635
32605
|
setStatusView(StatusView.Init);
|
|
@@ -32727,6 +32697,10 @@ function startOCR(config) {
|
|
|
32727
32697
|
stopAnimate();
|
|
32728
32698
|
previosAntiFraudAnimateTime = Date.now();
|
|
32729
32699
|
uiComponentOCRMask.setCardBorderColor('pass');
|
|
32700
|
+
// Add 2 second delay before moving to next stage
|
|
32701
|
+
setTimeout(() => {
|
|
32702
|
+
console.log('Stage pass delay completed, ready for next direction');
|
|
32703
|
+
}, 2000);
|
|
32730
32704
|
break;
|
|
32731
32705
|
case EAuthMeIDCardAntiFraudStatus.Pass:
|
|
32732
32706
|
uiComponentOCRMask.setCardBorderColor('pass');
|
|
@@ -32768,7 +32742,10 @@ function startOCR(config) {
|
|
|
32768
32742
|
})), sendFrame(canvasSizeInfo, uiComponentOCR.image, uiComponentBasic.video, config.onAntiFraudFrame, ocrEngineConfig.fraudMaxFps, false, 'jpg', undefined), map(x => x.result), tap(x => {
|
|
32769
32743
|
applyTextByResult(x);
|
|
32770
32744
|
cardRotateByStage(x.eStage);
|
|
32771
|
-
|
|
32745
|
+
if (isTutorialFinish) {
|
|
32746
|
+
cardRotateTextProcess(x.eStage, eStage != x.eStage);
|
|
32747
|
+
eStage = x.eStage;
|
|
32748
|
+
}
|
|
32772
32749
|
if (x.eStage !== currentAntiFraudStage) {
|
|
32773
32750
|
needDeformationCount = 0;
|
|
32774
32751
|
previosAntiFraudAnimateTime = 0;
|
|
@@ -32826,8 +32803,6 @@ function startOCR(config) {
|
|
|
32826
32803
|
x,
|
|
32827
32804
|
y
|
|
32828
32805
|
})), config.ocrConfig.needAntiFraud);
|
|
32829
|
-
setHintTextLocale();
|
|
32830
|
-
// }
|
|
32831
32806
|
const applyTextByResult = result => {
|
|
32832
32807
|
uiComponentOCR.statusText.classList.add('non-empty');
|
|
32833
32808
|
switch (result.eStatus) {
|
|
@@ -32858,6 +32833,11 @@ function startOCR(config) {
|
|
|
32858
32833
|
uiComponentOCRMask.setCardBorderColor('error');
|
|
32859
32834
|
blurCount++;
|
|
32860
32835
|
break;
|
|
32836
|
+
case EAuthMeCardOCRStatus.Motion:
|
|
32837
|
+
uiComponentOCR.statusText.textContent = translateService.translate('sdk.general.verify.error.motion');
|
|
32838
|
+
sendStatusDescription$1(StatusDescription.Motion);
|
|
32839
|
+
uiComponentOCRMask.setCardBorderColor('error');
|
|
32840
|
+
break;
|
|
32861
32841
|
case EAuthMeMRZServiceStatus.RecogFailed:
|
|
32862
32842
|
case EAuthMeMRZServiceStatus.WrongCardType:
|
|
32863
32843
|
uiComponentOCR.statusText.textContent = translateService.translate('sdk.general.verify.error.wrongCardType');
|
|
@@ -32927,8 +32907,8 @@ function startOCR(config) {
|
|
|
32927
32907
|
if (!confirmBtns || !(confirmBtns === null || confirmBtns === void 0 ? void 0 : confirmBtns.buttonRetry) || !(confirmBtns === null || confirmBtns === void 0 ? void 0 : confirmBtns.buttonNext)) {
|
|
32928
32908
|
throw new AuthmeError(ErrorCode.SDK_INTERNAL_ERROR, 'confirmBtns is null');
|
|
32929
32909
|
}
|
|
32930
|
-
const retryEvents = fromEvent(confirmBtns.buttonRetry, 'click').pipe(
|
|
32931
|
-
const confirmEvents = fromEvent(confirmBtns.buttonNext, 'click').pipe(
|
|
32910
|
+
const retryEvents = fromEvent(confirmBtns.buttonRetry, 'click').pipe(map(() => true));
|
|
32911
|
+
const confirmEvents = fromEvent(confirmBtns.buttonNext, 'click').pipe(map(() => false));
|
|
32932
32912
|
const allEvents$ = merge(retryEvents, confirmEvents);
|
|
32933
32913
|
return yield firstValueFrom(allEvents$.pipe());
|
|
32934
32914
|
// showElement(uiComponentOCR.confirmImageContainer);
|
|
@@ -32982,7 +32962,7 @@ function startOCR(config) {
|
|
|
32982
32962
|
}), switchMap(needRetry => {
|
|
32983
32963
|
if (needRetry) {
|
|
32984
32964
|
ocrSendFrameAnimation = false;
|
|
32985
|
-
return recognition(true).pipe(map(() =>
|
|
32965
|
+
return recognition(true).pipe(map(() => false));
|
|
32986
32966
|
} else {
|
|
32987
32967
|
hideElement(captureBtn);
|
|
32988
32968
|
// hideElement(uiComponentOCR.confirmImageContainer);
|
|
@@ -33426,13 +33406,16 @@ function startOCR(config) {
|
|
|
33426
33406
|
yield finishTutorial(point);
|
|
33427
33407
|
return;
|
|
33428
33408
|
}))));
|
|
33429
|
-
countdownTimer(
|
|
33430
|
-
uiComponentOCR.confirmBtn.disabled =
|
|
33409
|
+
countdownTimer(uiThemeConfig.fraudAnimationLoadingPage.countdownTime);
|
|
33410
|
+
uiComponentOCR.confirmBtn.disabled = true;
|
|
33431
33411
|
function countdownTimer(countdown) {
|
|
33432
33412
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33433
33413
|
if (countdown <= 0 && !isTutorialFinish) {
|
|
33434
33414
|
uiComponentOCR.confirmBtn.innerText = translateService.translate('sdk.guard.verify.guide.start');
|
|
33435
|
-
|
|
33415
|
+
uiComponentOCR.confirmBtn.disabled = false;
|
|
33416
|
+
if (uiThemeConfig.fraudAnimationLoadingPage.isAutoTapEnabled) {
|
|
33417
|
+
yield finishTutorial(point);
|
|
33418
|
+
}
|
|
33436
33419
|
return;
|
|
33437
33420
|
}
|
|
33438
33421
|
uiComponentOCR.confirmBtn.innerText = `${translateService.translate('sdk.guard.verify.guide.start')} (${countdown})`;
|
|
@@ -33704,7 +33687,6 @@ function startOCR(config) {
|
|
|
33704
33687
|
if (!cardMatchROI || cardMatchROI.length == 0) throw new AuthmeError(ErrorCode.SDK_INTERNAL_ERROR, 'getCardMatchROI is null');
|
|
33705
33688
|
uiComponentOCRMask.setCardBorderColor('error');
|
|
33706
33689
|
uiComponentOCRMask.setCardPoints(cardMatchROI, config.ocrConfig.needAntiFraud, facingMode === 'front');
|
|
33707
|
-
setHintTextLocale();
|
|
33708
33690
|
currentAntiFraudStage = stage;
|
|
33709
33691
|
if (uiThemeConfig.fraudScanHint.isEnabled && (isTutorialFinish && !getIsRotateCardAnimating() || mandatoryRotate)) {
|
|
33710
33692
|
yield stopAnimate();
|
|
@@ -33712,19 +33694,69 @@ function startOCR(config) {
|
|
|
33712
33694
|
}
|
|
33713
33695
|
});
|
|
33714
33696
|
}
|
|
33715
|
-
function cardRotateTextProcess(stage) {
|
|
33697
|
+
function cardRotateTextProcess(stage, showDirection = false) {
|
|
33698
|
+
// Clear any existing text and icon first
|
|
33699
|
+
uiComponentOCR.directionIcon.innerHTML = '';
|
|
33700
|
+
// Helper function to set up direction display
|
|
33701
|
+
const setupDirectionDisplay = (direction, translationKey, iconOnRight = false) => {
|
|
33702
|
+
const arrow = createDirectionArrow(direction);
|
|
33703
|
+
console.log(`DEBUG: Created ${direction} arrow SVG:`, arrow);
|
|
33704
|
+
uiComponentOCR.directionIcon.appendChild(arrow);
|
|
33705
|
+
// Set text
|
|
33706
|
+
uiComponentOCR.directionText.textContent = translateService.translate(translationKey);
|
|
33707
|
+
console.log('DEBUG: Direction text set to:', uiComponentOCR.directionText.textContent);
|
|
33708
|
+
// Re-order elements based on direction
|
|
33709
|
+
if (iconOnRight) {
|
|
33710
|
+
// Text first, then icon
|
|
33711
|
+
uiComponentOCR.directionTextPanel.appendChild(uiComponentOCR.directionText);
|
|
33712
|
+
uiComponentOCR.directionTextPanel.appendChild(uiComponentOCR.directionIcon);
|
|
33713
|
+
} else {
|
|
33714
|
+
// Icon first, then text
|
|
33715
|
+
uiComponentOCR.directionTextPanel.appendChild(uiComponentOCR.directionIcon);
|
|
33716
|
+
uiComponentOCR.directionTextPanel.appendChild(uiComponentOCR.directionText);
|
|
33717
|
+
}
|
|
33718
|
+
if (showDirection) {
|
|
33719
|
+
uiComponentOCR.directionTextPanel.style.display = 'flex';
|
|
33720
|
+
// Set timer to hide panel after 2 seconds (for any direction)
|
|
33721
|
+
setTimeout(() => {
|
|
33722
|
+
uiComponentOCR.directionTextPanel.style.display = 'none';
|
|
33723
|
+
}, 2000);
|
|
33724
|
+
}
|
|
33725
|
+
// Set top text
|
|
33726
|
+
setTopText(translateService.translate('sdk.guard.verify.guide.idCardFlip'));
|
|
33727
|
+
};
|
|
33728
|
+
// Create direction arrow using embedded SVG content
|
|
33729
|
+
const createDirectionArrow = direction => {
|
|
33730
|
+
const container = document.createElement('div');
|
|
33731
|
+
const svgContent = {
|
|
33732
|
+
left: `<svg width="72" height="72" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
33733
|
+
<path d="M35.6768 31.1478C36.2223 32.1083 37.4431 32.4447 38.4036 31.8993C39.3641 31.3538 39.7005 30.133 39.155 29.1725L37.4159 30.1601L35.6768 31.1478ZM1.16989 17.0763C0.388844 17.8573 0.388844 19.1237 1.16989 19.9047L13.8978 32.6326C14.6789 33.4137 15.9452 33.4137 16.7262 32.6326C17.5073 31.8516 17.5073 30.5853 16.7262 29.8042L5.41253 18.4905L16.7262 7.1768C17.5073 6.39575 17.5073 5.12942 16.7262 4.34837C15.9452 3.56732 14.6789 3.56732 13.8978 4.34837L1.16989 17.0763ZM37.4159 30.1601L39.155 29.1725C34.775 21.46 29.0347 18.217 22.5604 16.9896C19.3956 16.3896 16.0872 16.2747 12.7603 16.2999C11.0948 16.3125 9.39768 16.3609 7.70512 16.4052C6.00456 16.4497 4.30124 16.4905 2.58411 16.4905V18.4905V20.4905C4.35894 20.4905 6.10892 20.4484 7.80987 20.4038C9.5188 20.3591 11.1714 20.3121 12.7906 20.2998C16.0333 20.2752 19.0348 20.3924 21.8153 20.9196C27.2316 21.9464 31.9232 24.5383 35.6768 31.1478L37.4159 30.1601Z" fill="#4AD396"/>
|
|
33734
|
+
</svg>`,
|
|
33735
|
+
right: `<svg width="72" height="72" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
33736
|
+
<path d="M0.844991 29.1725C0.29952 30.133 0.635957 31.3538 1.59644 31.8993C2.55693 32.4447 3.77775 32.1083 4.32322 31.1478L2.58411 30.1601L0.844991 29.1725ZM38.8301 19.9047C39.6112 19.1237 39.6112 17.8573 38.8301 17.0763L26.1022 4.34837C25.3212 3.56732 24.0548 3.56732 23.2738 4.34837C22.4927 5.12942 22.4927 6.39575 23.2738 7.1768L34.5875 18.4905L23.2738 29.8042C22.4927 30.5853 22.4927 31.8516 23.2738 32.6326C24.0548 33.4137 25.3212 33.4137 26.1022 32.6326L38.8301 19.9047ZM2.58411 30.1601L4.32322 31.1478C8.07682 24.5383 12.7684 21.9464 18.1847 20.9196C20.9652 20.3924 23.9667 20.2752 27.2094 20.2998C28.8287 20.3121 30.4812 20.3591 32.1902 20.4038C33.8911 20.4484 35.6411 20.4905 37.4159 20.4905V18.4905V16.4905C35.6988 16.4905 33.9955 16.4497 32.2949 16.4052C30.6023 16.3609 28.9052 16.3125 27.2397 16.2999C23.9128 16.2747 20.6044 16.3896 17.4396 16.9896C10.9653 18.217 5.225 21.46 0.844991 29.1725L2.58411 30.1601Z" fill="#4AD396"/>
|
|
33737
|
+
</svg>`,
|
|
33738
|
+
up: `<svg width="72" height="72" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
33739
|
+
<path d="M31.1478 35.6768C32.1083 36.2223 32.4447 37.4431 31.8993 38.4036C31.3538 39.3641 30.133 39.7005 29.1725 39.155L30.1601 37.4159L31.1478 35.6768ZM17.0763 1.16989C17.8573 0.388844 19.1237 0.388844 19.9047 1.16989L32.6326 13.8978C33.4137 14.6789 33.4137 15.9452 32.6326 16.7262C31.8516 17.5073 30.5853 17.5073 29.8042 16.7262L18.4905 5.41253L7.1768 16.7262C6.39575 17.5073 5.12942 17.5073 4.34837 16.7262C3.56733 15.9452 3.56733 14.6789 4.34837 13.8978L17.0763 1.16989ZM30.1601 37.4159L29.1725 39.155C21.46 34.775 18.217 29.0347 16.9896 22.5604C16.3896 19.3956 16.2747 16.0872 16.2999 12.7603C16.3125 11.0948 16.3609 9.39768 16.4052 7.70512C16.4497 6.00456 16.4905 4.30124 16.4905 2.58411L18.4905 2.58411L20.4905 2.58411C20.4905 4.35894 20.4484 6.10892 20.4038 7.80987C20.3591 9.5188 20.3121 11.1714 20.2998 12.7906C20.2752 16.0333 20.3924 19.0348 20.9196 21.8153C21.9465 27.2316 24.5383 31.9232 31.1478 35.6768L30.1601 37.4159Z" fill="#4AD396"/>
|
|
33740
|
+
</svg>`,
|
|
33741
|
+
down: `<svg width="72" height="72" viewBox="0 0 41 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
33742
|
+
<path d="M15.0559 0.844991C14.0954 0.299519 12.8746 0.635956 12.3291 1.59644C11.7837 2.55693 12.1201 3.77775 13.0806 4.32322L14.0683 2.58411L15.0559 0.844991ZM24.3237 38.8301C25.1047 39.6112 26.371 39.6112 27.1521 38.8301L39.88 26.1022C40.6611 25.3212 40.6611 24.0548 39.88 23.2738C39.099 22.4927 37.8326 22.4927 37.0516 23.2738L25.7379 34.5875L14.4242 23.2738C13.6431 22.4927 12.3768 22.4927 11.5957 23.2738C10.8147 24.0548 10.8147 25.3212 11.5957 26.1022L24.3237 38.8301ZM14.0683 2.58411L13.0806 4.32322C19.6901 8.07682 22.2819 12.7684 23.3088 18.1847C23.836 20.9652 23.9531 23.9667 23.9286 27.2094C23.9163 28.8287 23.8693 30.4812 23.8246 32.1902C23.78 33.8911 23.7379 35.6411 23.7379 37.4159L25.7379 37.4159L27.7379 37.4159C27.7379 35.6988 27.7786 33.9955 27.8232 32.2949C27.8675 30.6023 27.9159 28.9052 27.9285 27.2397C27.9537 23.9128 27.8388 20.6044 27.2388 17.4396C26.0113 10.9653 22.7684 5.225 15.0559 0.844991L14.0683 2.58411Z" fill="#4AD396"/>
|
|
33743
|
+
</svg>`
|
|
33744
|
+
};
|
|
33745
|
+
container.innerHTML = svgContent[direction];
|
|
33746
|
+
return container;
|
|
33747
|
+
};
|
|
33716
33748
|
switch (stage) {
|
|
33717
33749
|
case EAuthMeIDCardAntiFraudStage.Left:
|
|
33718
|
-
|
|
33750
|
+
setupDirectionDisplay('left', 'sdk.guard.verify.guide.idCardFlip.left');
|
|
33719
33751
|
break;
|
|
33720
33752
|
case EAuthMeIDCardAntiFraudStage.Right:
|
|
33721
|
-
|
|
33753
|
+
setupDirectionDisplay('right', 'sdk.guard.verify.guide.idCardFlip.right', true);
|
|
33722
33754
|
break;
|
|
33723
33755
|
case EAuthMeIDCardAntiFraudStage.Up:
|
|
33724
|
-
|
|
33756
|
+
setupDirectionDisplay('up', 'sdk.guard.verify.guide.idCardFlip.up');
|
|
33725
33757
|
break;
|
|
33726
33758
|
case EAuthMeIDCardAntiFraudStage.Down:
|
|
33727
|
-
|
|
33759
|
+
setupDirectionDisplay('down', 'sdk.guard.verify.guide.idCardFlip.down', true);
|
|
33728
33760
|
break;
|
|
33729
33761
|
}
|
|
33730
33762
|
}
|
|
@@ -34386,7 +34418,7 @@ class LivenessVerifyModule {
|
|
|
34386
34418
|
}
|
|
34387
34419
|
}
|
|
34388
34420
|
|
|
34389
|
-
function handleUploadError$1(
|
|
34421
|
+
function handleUploadError$1(_error) {
|
|
34390
34422
|
return new Promise(resolve => {
|
|
34391
34423
|
uploadModal({
|
|
34392
34424
|
type: 'error',
|
|
@@ -34450,6 +34482,7 @@ class LivenessModule {
|
|
|
34450
34482
|
try {
|
|
34451
34483
|
const result = yield firstValueFrom(yield startLiveness({
|
|
34452
34484
|
getOptionConfig: () => __awaiter(this, void 0, void 0, function* () {
|
|
34485
|
+
console.log('config.deviceType', config.deviceType);
|
|
34453
34486
|
const res = yield LivenessAPI.IdentityVerification.option(config.deviceType);
|
|
34454
34487
|
const themeId = res.themeId;
|
|
34455
34488
|
if (!themeId) {
|
|
@@ -34585,7 +34618,7 @@ class LivenessModule {
|
|
|
34585
34618
|
// );
|
|
34586
34619
|
yield handleUpload(id, frameList, resultList, meta, config, shouldEncrypt, encryptDataBase64);
|
|
34587
34620
|
// upload finish view
|
|
34588
|
-
|
|
34621
|
+
uploadModal({
|
|
34589
34622
|
type: 'success',
|
|
34590
34623
|
titleSuccess: getTranslateInstance().translate('sdk.general.successUpload')
|
|
34591
34624
|
});
|
|
@@ -37164,7 +37197,7 @@ class AuthmeIdentityVerification extends AuthmeFunctionModule {
|
|
|
37164
37197
|
getCustomerState(arg) {
|
|
37165
37198
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37166
37199
|
const paramsDefault = {
|
|
37167
|
-
waitingTime:
|
|
37200
|
+
waitingTime: 60,
|
|
37168
37201
|
retryTimes: 2
|
|
37169
37202
|
};
|
|
37170
37203
|
if (arg === null || arg === void 0 ? void 0 : arg.retryTimes) {
|
|
@@ -37213,8 +37246,8 @@ class AuthmeIdentityVerification extends AuthmeFunctionModule {
|
|
|
37213
37246
|
}
|
|
37214
37247
|
|
|
37215
37248
|
var name = "authme/sdk";
|
|
37216
|
-
var version$1 = "2.8.
|
|
37217
|
-
var date = "2025-
|
|
37249
|
+
var version$1 = "2.8.26";
|
|
37250
|
+
var date = "2025-09-30T03:00:07+0000";
|
|
37218
37251
|
var packageInfo = {
|
|
37219
37252
|
name: name,
|
|
37220
37253
|
version: version$1,
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authme/identity-verification",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.26",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"core-js": "^3.6.0",
|
|
6
6
|
"lottie-web": "^5.9.2",
|
|
7
7
|
"rxjs": "^7.4.0",
|
|
8
|
-
"@authme/core": "2.8.
|
|
9
|
-
"@authme/engine": "2.8.
|
|
10
|
-
"@authme/id-recognition": "2.8.
|
|
11
|
-
"@authme/liveness": "2.8.
|
|
12
|
-
"@authme/util": "2.8.
|
|
8
|
+
"@authme/core": "2.8.26",
|
|
9
|
+
"@authme/engine": "2.8.26",
|
|
10
|
+
"@authme/id-recognition": "2.8.26",
|
|
11
|
+
"@authme/liveness": "2.8.26",
|
|
12
|
+
"@authme/util": "2.8.26"
|
|
13
13
|
},
|
|
14
14
|
"module": "./index.js",
|
|
15
15
|
"main": "./index.cjs",
|
package/src/lib/ui/ocr.ui.d.ts
CHANGED
|
@@ -69,6 +69,9 @@ export declare const renderOCRUI: (config: {
|
|
|
69
69
|
titleText: HTMLSpanElement;
|
|
70
70
|
hintText: HTMLDivElement;
|
|
71
71
|
statusText: HTMLSpanElement;
|
|
72
|
+
directionTextPanel: HTMLDivElement;
|
|
73
|
+
directionText: HTMLSpanElement;
|
|
74
|
+
directionIcon: HTMLSpanElement;
|
|
72
75
|
statusTextPanel: HTMLDivElement;
|
|
73
76
|
lottieMask: HTMLDivElement;
|
|
74
77
|
arrowAnimationContainer: HTMLDivElement;
|