idmission-web-sdk 2.0.1 → 2.0.3
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/lib/models/helpers.d.ts +2 -0
- package/dist/sdk2.cjs.development.js +89 -37
- package/dist/sdk2.cjs.development.js.map +1 -1
- package/dist/sdk2.cjs.production.js +1 -1
- package/dist/sdk2.cjs.production.js.map +1 -1
- package/dist/sdk2.esm.js +89 -37
- package/dist/sdk2.esm.js.map +1 -1
- package/dist/sdk2.umd.development.js +89 -37
- package/dist/sdk2.umd.development.js.map +1 -1
- package/dist/sdk2.umd.production.js +1 -1
- package/dist/sdk2.umd.production.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BoundingBox } from '@mediapipe/tasks-vision';
|
|
2
|
+
import { MutableRefObject } from 'react';
|
|
2
3
|
export declare function convertBoundingBox(box?: BoundingBox): {
|
|
3
4
|
xMin: number;
|
|
4
5
|
xMax: number;
|
|
@@ -7,3 +8,4 @@ export declare function convertBoundingBox(box?: BoundingBox): {
|
|
|
7
8
|
width: number;
|
|
8
9
|
height: number;
|
|
9
10
|
};
|
|
11
|
+
export declare function waitForVideoReady(videoRef: MutableRefObject<HTMLVideoElement | null>, checkEveryMs?: number): Promise<void>;
|
|
@@ -49,7 +49,7 @@ var LanguageDetector__default = /*#__PURE__*/_interopDefaultLegacy(LanguageDetec
|
|
|
49
49
|
var i18n__default = /*#__PURE__*/_interopDefaultLegacy(i18n);
|
|
50
50
|
var SignatureCanvas__default = /*#__PURE__*/_interopDefaultLegacy(SignatureCanvas);
|
|
51
51
|
|
|
52
|
-
var webSdkVersion = '2.0.
|
|
52
|
+
var webSdkVersion = '2.0.3';
|
|
53
53
|
|
|
54
54
|
function getPlatform() {
|
|
55
55
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -2481,6 +2481,34 @@ function giveUpAfter(maxTime) {
|
|
|
2481
2481
|
});
|
|
2482
2482
|
}
|
|
2483
2483
|
|
|
2484
|
+
function convertBoundingBox(box) {
|
|
2485
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
2486
|
+
return {
|
|
2487
|
+
xMin: (_a = box === null || box === void 0 ? void 0 : box.originX) !== null && _a !== void 0 ? _a : 0,
|
|
2488
|
+
xMax: ((_b = box === null || box === void 0 ? void 0 : box.originX) !== null && _b !== void 0 ? _b : 0) + ((_c = box === null || box === void 0 ? void 0 : box.width) !== null && _c !== void 0 ? _c : 0),
|
|
2489
|
+
yMin: (_d = box === null || box === void 0 ? void 0 : box.originY) !== null && _d !== void 0 ? _d : 0,
|
|
2490
|
+
yMax: ((_e = box === null || box === void 0 ? void 0 : box.originY) !== null && _e !== void 0 ? _e : 0) + ((_f = box === null || box === void 0 ? void 0 : box.height) !== null && _f !== void 0 ? _f : 0),
|
|
2491
|
+
width: (_g = box === null || box === void 0 ? void 0 : box.width) !== null && _g !== void 0 ? _g : 0,
|
|
2492
|
+
height: (_h = box === null || box === void 0 ? void 0 : box.height) !== null && _h !== void 0 ? _h : 0
|
|
2493
|
+
};
|
|
2494
|
+
}
|
|
2495
|
+
function waitForVideoReady(videoRef, checkEveryMs) {
|
|
2496
|
+
if (checkEveryMs === void 0) {
|
|
2497
|
+
checkEveryMs = 100;
|
|
2498
|
+
}
|
|
2499
|
+
return new Promise(function (resolve) {
|
|
2500
|
+
var _a;
|
|
2501
|
+
if (((_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.readyState) === 4) return resolve();
|
|
2502
|
+
var interval = setInterval(function () {
|
|
2503
|
+
var _a;
|
|
2504
|
+
if (((_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.readyState) === 4) {
|
|
2505
|
+
clearInterval(interval);
|
|
2506
|
+
resolve();
|
|
2507
|
+
}
|
|
2508
|
+
}, checkEveryMs);
|
|
2509
|
+
});
|
|
2510
|
+
}
|
|
2511
|
+
|
|
2484
2512
|
var defaultFocusModelPath = "https://websdk-cdn-dev.idmission.com/assets/models/focusmp20240523/model_float16.tflite";
|
|
2485
2513
|
var defaultFocusModelLoadTimeoutMs = 45000;
|
|
2486
2514
|
var defaultFocusThresholds = {
|
|
@@ -2496,7 +2524,7 @@ var defaultFocusThresholds = {
|
|
|
2496
2524
|
var models = {};
|
|
2497
2525
|
function loadFocusModel(modelAssetPath) {
|
|
2498
2526
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
2499
|
-
var id, _a, _b, _c, _d
|
|
2527
|
+
var id, _a, _b, _c, _d;
|
|
2500
2528
|
return tslib.__generator(this, function (_e) {
|
|
2501
2529
|
switch (_e.label) {
|
|
2502
2530
|
case 0:
|
|
@@ -2522,9 +2550,6 @@ function loadFocusModel(modelAssetPath) {
|
|
|
2522
2550
|
}])];
|
|
2523
2551
|
case 3:
|
|
2524
2552
|
_a[_b] = _e.sent();
|
|
2525
|
-
emptyFrame = document.createElement('canvas');
|
|
2526
|
-
models[id].classifyForVideo(emptyFrame, performance.now());
|
|
2527
|
-
emptyFrame.remove();
|
|
2528
2553
|
return [2 /*return*/, models[id]];
|
|
2529
2554
|
}
|
|
2530
2555
|
});
|
|
@@ -2546,7 +2571,9 @@ function useLoadFocusModel(_a) {
|
|
|
2546
2571
|
var _f = React.useState(null),
|
|
2547
2572
|
modelError = _f[0],
|
|
2548
2573
|
setModelError = _f[1];
|
|
2574
|
+
var videoRef = React.useContext(CameraStateContext).videoRef;
|
|
2549
2575
|
React.useEffect(function loadModel() {
|
|
2576
|
+
var _this = this;
|
|
2550
2577
|
setReady(false);
|
|
2551
2578
|
function handleDownloadProgress(event) {
|
|
2552
2579
|
setModelDownloadProgress(progressToPercentage(event.detail));
|
|
@@ -2556,9 +2583,22 @@ function useLoadFocusModel(_a) {
|
|
|
2556
2583
|
setModelError(new Error('Model loading time limit exceeded.'));
|
|
2557
2584
|
}, modelLoadTimeoutMs);
|
|
2558
2585
|
loadFocusModel(modelPath).then(function (loadedModel) {
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2586
|
+
return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
2587
|
+
return tslib.__generator(this, function (_a) {
|
|
2588
|
+
switch (_a.label) {
|
|
2589
|
+
case 0:
|
|
2590
|
+
model.current = loadedModel;
|
|
2591
|
+
setModelDownloadProgress(100);
|
|
2592
|
+
clearTimeout(modelLoadTimeout);
|
|
2593
|
+
return [4 /*yield*/, waitForVideoReady(videoRef)];
|
|
2594
|
+
case 1:
|
|
2595
|
+
_a.sent();
|
|
2596
|
+
loadedModel.classifyForVideo(videoRef.current, performance.now());
|
|
2597
|
+
setReady(true);
|
|
2598
|
+
return [2 /*return*/];
|
|
2599
|
+
}
|
|
2600
|
+
});
|
|
2601
|
+
});
|
|
2562
2602
|
})["catch"](function (e) {
|
|
2563
2603
|
setModelError(e);
|
|
2564
2604
|
})["finally"](function () {
|
|
@@ -2568,7 +2608,7 @@ function useLoadFocusModel(_a) {
|
|
|
2568
2608
|
clearTimeout(modelLoadTimeout);
|
|
2569
2609
|
document.removeEventListener('idmission.preloadProgress.focus', handleDownloadProgress);
|
|
2570
2610
|
};
|
|
2571
|
-
}, [modelPath, modelLoadTimeoutMs]);
|
|
2611
|
+
}, [modelPath, modelLoadTimeoutMs, videoRef]);
|
|
2572
2612
|
React.useEffect(function handleModelError() {
|
|
2573
2613
|
modelError && (onModelError === null || onModelError === void 0 ? void 0 : onModelError(modelError));
|
|
2574
2614
|
}, [modelError, onModelError]);
|
|
@@ -2748,24 +2788,12 @@ K("FACEDETECTION_TESSELATION",[[127,34],[34,139],[139,127],[11,0],[0,37],[37,11]
|
|
|
2748
2788
|
[256,341],[341,452],[452,256],[414,413],[413,463],[463,414],[286,441],[441,414],[414,286],[286,258],[258,441],[441,286],[258,257],[257,442],[442,258],[257,259],[259,443],[443,257],[259,260],[260,444],[444,259],[260,467],[467,445],[445,260],[309,459],[459,250],[250,309],[305,289],[289,290],[290,305],[305,290],[290,460],[460,305],[401,376],[376,435],[435,401],[309,250],[250,392],[392,309],[376,411],[411,433],[433,376],[453,341],[341,464],[464,453],[357,453],[453,465],[465,357],[343,357],[357,412],[412,
|
|
2749
2789
|
343],[437,343],[343,399],[399,437],[344,360],[360,440],[440,344],[420,437],[437,456],[456,420],[360,420],[420,363],[363,360],[361,401],[401,288],[288,361],[265,372],[372,353],[353,265],[390,339],[339,249],[249,390],[339,448],[448,255],[255,339]]);K("VERSION","0.4.1646425229");}).call(commonjsGlobal);
|
|
2750
2790
|
|
|
2751
|
-
function convertBoundingBox(box) {
|
|
2752
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
2753
|
-
return {
|
|
2754
|
-
xMin: (_a = box === null || box === void 0 ? void 0 : box.originX) !== null && _a !== void 0 ? _a : 0,
|
|
2755
|
-
xMax: ((_b = box === null || box === void 0 ? void 0 : box.originX) !== null && _b !== void 0 ? _b : 0) + ((_c = box === null || box === void 0 ? void 0 : box.width) !== null && _c !== void 0 ? _c : 0),
|
|
2756
|
-
yMin: (_d = box === null || box === void 0 ? void 0 : box.originY) !== null && _d !== void 0 ? _d : 0,
|
|
2757
|
-
yMax: ((_e = box === null || box === void 0 ? void 0 : box.originY) !== null && _e !== void 0 ? _e : 0) + ((_f = box === null || box === void 0 ? void 0 : box.height) !== null && _f !== void 0 ? _f : 0),
|
|
2758
|
-
width: (_g = box === null || box === void 0 ? void 0 : box.width) !== null && _g !== void 0 ? _g : 0,
|
|
2759
|
-
height: (_h = box === null || box === void 0 ? void 0 : box.height) !== null && _h !== void 0 ? _h : 0
|
|
2760
|
-
};
|
|
2761
|
-
}
|
|
2762
|
-
|
|
2763
2791
|
var defaultFaceDetectorModelPath = 'https://websdk-cdn-dev.idmission.com/assets/models/blazeface20240207/blaze_face_short_range.tflite';
|
|
2764
2792
|
var defaultSelfieCaptureModelLoadTimeoutMs = 45000;
|
|
2765
2793
|
var detector;
|
|
2766
2794
|
function loadFaceDetector() {
|
|
2767
2795
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
2768
|
-
var _a, _b
|
|
2796
|
+
var _a, _b;
|
|
2769
2797
|
return tslib.__generator(this, function (_c) {
|
|
2770
2798
|
switch (_c.label) {
|
|
2771
2799
|
case 0:
|
|
@@ -2788,9 +2816,6 @@ function loadFaceDetector() {
|
|
|
2788
2816
|
}])];
|
|
2789
2817
|
case 3:
|
|
2790
2818
|
detector = _c.sent();
|
|
2791
|
-
emptyFrame = document.createElement('canvas');
|
|
2792
|
-
detector.detectForVideo(emptyFrame, performance.now());
|
|
2793
|
-
emptyFrame.remove();
|
|
2794
2819
|
return [2 /*return*/, detector];
|
|
2795
2820
|
}
|
|
2796
2821
|
});
|
|
@@ -2810,7 +2835,9 @@ function useLoadFaceDetector(_a) {
|
|
|
2810
2835
|
var _e = React.useState(null),
|
|
2811
2836
|
modelError = _e[0],
|
|
2812
2837
|
setModelError = _e[1];
|
|
2838
|
+
var videoRef = React.useContext(CameraStateContext).videoRef;
|
|
2813
2839
|
React.useEffect(function loadModel() {
|
|
2840
|
+
var _this = this;
|
|
2814
2841
|
setReady(false);
|
|
2815
2842
|
var modelLoadTimeout = setTimeout(function () {
|
|
2816
2843
|
setModelError(new Error('Model loading time limit exceeded.'));
|
|
@@ -2820,9 +2847,22 @@ function useLoadFaceDetector(_a) {
|
|
|
2820
2847
|
}
|
|
2821
2848
|
document.addEventListener('idmission.preloadProgress.faceDetection', handleDownloadProgress);
|
|
2822
2849
|
loadFaceDetector().then(function (model) {
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2850
|
+
return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
2851
|
+
return tslib.__generator(this, function (_a) {
|
|
2852
|
+
switch (_a.label) {
|
|
2853
|
+
case 0:
|
|
2854
|
+
detector.current = model;
|
|
2855
|
+
setModelDownloadProgress(100);
|
|
2856
|
+
clearTimeout(modelLoadTimeout);
|
|
2857
|
+
return [4 /*yield*/, waitForVideoReady(videoRef)];
|
|
2858
|
+
case 1:
|
|
2859
|
+
_a.sent();
|
|
2860
|
+
model.detectForVideo(videoRef.current, performance.now());
|
|
2861
|
+
setReady(true);
|
|
2862
|
+
return [2 /*return*/];
|
|
2863
|
+
}
|
|
2864
|
+
});
|
|
2865
|
+
});
|
|
2826
2866
|
})["catch"](function (e) {
|
|
2827
2867
|
setModelError(e);
|
|
2828
2868
|
})["finally"](function () {
|
|
@@ -2832,7 +2872,7 @@ function useLoadFaceDetector(_a) {
|
|
|
2832
2872
|
clearTimeout(modelLoadTimeout);
|
|
2833
2873
|
document.removeEventListener('idmission.preloadProgress.faceDetection', handleDownloadProgress);
|
|
2834
2874
|
};
|
|
2835
|
-
}, [modelLoadTimeoutMs]);
|
|
2875
|
+
}, [modelLoadTimeoutMs, videoRef]);
|
|
2836
2876
|
React.useEffect(function handleModelError() {
|
|
2837
2877
|
modelError && (onModelError === null || onModelError === void 0 ? void 0 : onModelError(modelError));
|
|
2838
2878
|
}, [modelError, onModelError]);
|
|
@@ -3113,7 +3153,7 @@ function loadDocumentDetector(modelAssetPath, scoreThreshold) {
|
|
|
3113
3153
|
scoreThreshold = defaultDocumentDetectionScoreThreshold;
|
|
3114
3154
|
}
|
|
3115
3155
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
3116
|
-
var id, _a, _b, _c, _d
|
|
3156
|
+
var id, _a, _b, _c, _d;
|
|
3117
3157
|
return tslib.__generator(this, function (_e) {
|
|
3118
3158
|
switch (_e.label) {
|
|
3119
3159
|
case 0:
|
|
@@ -3140,9 +3180,6 @@ function loadDocumentDetector(modelAssetPath, scoreThreshold) {
|
|
|
3140
3180
|
}])];
|
|
3141
3181
|
case 3:
|
|
3142
3182
|
_a[_b] = _e.sent();
|
|
3143
|
-
emptyFrame = document.createElement('canvas');
|
|
3144
|
-
detectors[id].detectForVideo(emptyFrame, performance.now());
|
|
3145
|
-
emptyFrame.remove();
|
|
3146
3183
|
return [2 /*return*/, detectors[id]];
|
|
3147
3184
|
}
|
|
3148
3185
|
});
|
|
@@ -3166,7 +3203,9 @@ function useLoadDocumentDetector(_a) {
|
|
|
3166
3203
|
var _g = React.useState(null),
|
|
3167
3204
|
modelError = _g[0],
|
|
3168
3205
|
setModelError = _g[1];
|
|
3206
|
+
var videoRef = React.useContext(CameraStateContext).videoRef;
|
|
3169
3207
|
React.useEffect(function loadModel() {
|
|
3208
|
+
var _this = this;
|
|
3170
3209
|
setReady(false);
|
|
3171
3210
|
function handleDownloadProgress(event) {
|
|
3172
3211
|
setModelDownloadProgress(progressToPercentage(event.detail));
|
|
@@ -3176,9 +3215,22 @@ function useLoadDocumentDetector(_a) {
|
|
|
3176
3215
|
setModelError(new Error('Model loading time limit exceeded.'));
|
|
3177
3216
|
}, modelLoadTimeoutMs);
|
|
3178
3217
|
loadDocumentDetector(modelPath, scoreThreshold).then(function (model) {
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3218
|
+
return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
3219
|
+
return tslib.__generator(this, function (_a) {
|
|
3220
|
+
switch (_a.label) {
|
|
3221
|
+
case 0:
|
|
3222
|
+
detector.current = model;
|
|
3223
|
+
setModelDownloadProgress(100);
|
|
3224
|
+
clearTimeout(modelLoadTimeout);
|
|
3225
|
+
return [4 /*yield*/, waitForVideoReady(videoRef)];
|
|
3226
|
+
case 1:
|
|
3227
|
+
_a.sent();
|
|
3228
|
+
model.detectForVideo(videoRef.current, performance.now());
|
|
3229
|
+
setReady(true);
|
|
3230
|
+
return [2 /*return*/];
|
|
3231
|
+
}
|
|
3232
|
+
});
|
|
3233
|
+
});
|
|
3182
3234
|
})["catch"](function (e) {
|
|
3183
3235
|
setModelError(e);
|
|
3184
3236
|
})["finally"](function () {
|
|
@@ -3188,7 +3240,7 @@ function useLoadDocumentDetector(_a) {
|
|
|
3188
3240
|
clearTimeout(modelLoadTimeout);
|
|
3189
3241
|
document.removeEventListener('idmission.preloadProgress.documentDetection', handleDownloadProgress);
|
|
3190
3242
|
};
|
|
3191
|
-
}, [modelLoadTimeoutMs, modelPath, scoreThreshold]);
|
|
3243
|
+
}, [modelLoadTimeoutMs, modelPath, scoreThreshold, videoRef]);
|
|
3192
3244
|
React.useEffect(function handleModelError() {
|
|
3193
3245
|
modelError && (onModelError === null || onModelError === void 0 ? void 0 : onModelError(modelError));
|
|
3194
3246
|
}, [modelError, onModelError]);
|