idmission-web-sdk 2.3.98 → 2.3.99
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/components/video_signature_capture/VideoSignatureContext.d.ts +4 -1
- package/dist/components/video_signature_capture/VideoSignatureContext.d.ts.map +1 -1
- package/dist/sdk2.cjs.development.js +119 -100
- 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 +119 -100
- package/dist/sdk2.esm.js.map +1 -1
- package/dist/sdk2.umd.development.js +122 -104
- 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 +3 -3
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
2
|
import { SignatureData } from '../signature_capture/data';
|
|
3
3
|
import SignatureCanvas from 'react-signature-canvas';
|
|
4
|
+
import type { MediaInfo, MediaInfoResult } from 'mediainfo.js';
|
|
4
5
|
export type VideoSignatureMetadata = {
|
|
5
6
|
mimeType?: string;
|
|
7
|
+
mediaInfo?: MediaInfoResult;
|
|
6
8
|
timingData?: {
|
|
7
9
|
recordingStartRequestedAt?: number;
|
|
8
10
|
recordingStartedAt?: number;
|
|
@@ -31,6 +33,7 @@ export type VideoSignatureState = {
|
|
|
31
33
|
signatureValid: boolean;
|
|
32
34
|
signatureStartedAt?: number;
|
|
33
35
|
signatureEndedAt?: number;
|
|
36
|
+
mediaInfo?: MediaInfo<'object'>;
|
|
34
37
|
onSignatureVideoCaptured: OnSignatureVideoCaptured;
|
|
35
38
|
};
|
|
36
39
|
export declare const useVideoSignatureStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<VideoSignatureState>, "setState"> & {
|
|
@@ -47,7 +50,7 @@ export declare const useVideoSignatureStore: import("zustand").UseBoundStore<Omi
|
|
|
47
50
|
type: string;
|
|
48
51
|
}) | undefined): void;
|
|
49
52
|
}>;
|
|
50
|
-
export default function VideoSignatureContextProvider({ children, }: {
|
|
53
|
+
export default function VideoSignatureContextProvider({ children, captureMediaInfo, }: {
|
|
51
54
|
children: ReactNode;
|
|
52
55
|
captureMediaInfo?: boolean;
|
|
53
56
|
}): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoSignatureContext.d.ts","sourceRoot":"","sources":["../../../src/components/video_signature_capture/VideoSignatureContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAkC,MAAM,OAAO,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,eAAe,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"VideoSignatureContext.d.ts","sourceRoot":"","sources":["../../../src/components/video_signature_capture/VideoSignatureContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAkC,MAAM,OAAO,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,eAAe,MAAM,wBAAwB,CAAA;AAWpD,OAAO,KAAK,EAAiB,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAY7E,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,UAAU,CAAC,EAAE;QACX,yBAAyB,CAAC,EAAE,MAAM,CAAA;QAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,wBAAwB,CAAC,EAAE,MAAM,CAAA;QACjC,mBAAmB,CAAC,EAAE,MAAM,CAAA;QAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAC5B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,MAAM,GAAG,IAAI,EACjC,QAAQ,EAAE,sBAAsB,KAC7B,IAAI,CAAA;AAET,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAChD,aAAa,EAAE,CACb,aAAa,CAAC,EAAE,aAAa,EAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,KAC3B,IAAI,CAAA;IACT,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAE7B,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IAC9C,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;IAEhD,iBAAiB,EAAE,OAAO,CAAA;IAC1B,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,SAAS,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAE/B,wBAAwB,EAAE,wBAAwB,CAAA;CACnD,CAAA;AAaD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;EAkHlC,CAAA;AAiCD,MAAM,CAAC,OAAO,UAAU,6BAA6B,CAAC,EACpD,QAAQ,EACR,gBAAwB,GACzB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,qBAqHA"}
|
|
@@ -17,6 +17,7 @@ var middleware = require('zustand/middleware');
|
|
|
17
17
|
var shallow = require('zustand/react/shallow');
|
|
18
18
|
var cn = require('clsx');
|
|
19
19
|
var SignatureCanvas = require('react-signature-canvas');
|
|
20
|
+
var mediainfo_js = require('mediainfo.js');
|
|
20
21
|
var server = require('react-dom/server');
|
|
21
22
|
|
|
22
23
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
@@ -236,7 +237,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
236
237
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
237
238
|
};
|
|
238
239
|
|
|
239
|
-
var webSdkVersion = '2.3.
|
|
240
|
+
var webSdkVersion = '2.3.99';
|
|
240
241
|
|
|
241
242
|
function getPlatform() {
|
|
242
243
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -14326,14 +14327,23 @@ function inferBlobType(blobPart) {
|
|
|
14326
14327
|
return t.length > 0 ? t : undefined;
|
|
14327
14328
|
}
|
|
14328
14329
|
|
|
14329
|
-
|
|
14330
|
-
|
|
14331
|
-
|
|
14332
|
-
|
|
14333
|
-
|
|
14334
|
-
|
|
14335
|
-
|
|
14336
|
-
|
|
14330
|
+
function makeReadChunk(file) {
|
|
14331
|
+
var _this = this;
|
|
14332
|
+
return function (chunkSize, offset) {
|
|
14333
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
14334
|
+
var _a;
|
|
14335
|
+
return __generator(this, function (_b) {
|
|
14336
|
+
switch (_b.label) {
|
|
14337
|
+
case 0:
|
|
14338
|
+
_a = Uint8Array.bind;
|
|
14339
|
+
return [4 /*yield*/, file.slice(offset, offset + chunkSize).arrayBuffer()];
|
|
14340
|
+
case 1:
|
|
14341
|
+
return [2 /*return*/, new (_a.apply(Uint8Array, [void 0, _b.sent()]))()];
|
|
14342
|
+
}
|
|
14343
|
+
});
|
|
14344
|
+
});
|
|
14345
|
+
};
|
|
14346
|
+
}
|
|
14337
14347
|
var signatureRecorder = null;
|
|
14338
14348
|
var signatureChunks = [];
|
|
14339
14349
|
var videoSignatureInitialState = {
|
|
@@ -14368,9 +14378,8 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
|
|
|
14368
14378
|
if (!camera) throw new Error('Camera not found');
|
|
14369
14379
|
// set our flag and clear whatever we have recorded so far.
|
|
14370
14380
|
signatureChunks = [];
|
|
14371
|
-
var outputCanvas = get().outputCanvas;
|
|
14372
14381
|
// start recording from the output canvas to capture the signature
|
|
14373
|
-
var outputStream = (_a = outputCanvas.current) === null || _a === void 0 ? void 0 : _a.captureStream(24);
|
|
14382
|
+
var outputStream = (_a = get().outputCanvas.current) === null || _a === void 0 ? void 0 : _a.captureStream(24);
|
|
14374
14383
|
if (!outputStream) throw new Error('outputStream not found');
|
|
14375
14384
|
var tracks = [outputStream.getVideoTracks()[0]];
|
|
14376
14385
|
if (captureAudio) {
|
|
@@ -14415,39 +14424,42 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
|
|
|
14415
14424
|
signatureRecorder.stop();
|
|
14416
14425
|
signatureRecorder.onstop = function () {
|
|
14417
14426
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
14418
|
-
var recordingStoppedAt, inferredType, blob, _a, onSignatureVideoCaptured, recordingStartRequestedAt, recordingStartedAt, firstChunkReceivedAt, signatureStartedAt, signatureEndedAt, recordingStopRequestedAt, lastChunkReceivedAt;
|
|
14419
|
-
|
|
14420
|
-
|
|
14421
|
-
|
|
14422
|
-
|
|
14423
|
-
|
|
14424
|
-
|
|
14425
|
-
|
|
14426
|
-
|
|
14427
|
-
|
|
14428
|
-
|
|
14429
|
-
|
|
14430
|
-
|
|
14431
|
-
|
|
14432
|
-
|
|
14433
|
-
|
|
14434
|
-
|
|
14435
|
-
|
|
14436
|
-
|
|
14437
|
-
|
|
14438
|
-
|
|
14439
|
-
|
|
14440
|
-
|
|
14441
|
-
|
|
14442
|
-
|
|
14443
|
-
|
|
14444
|
-
|
|
14445
|
-
|
|
14446
|
-
|
|
14447
|
-
|
|
14448
|
-
|
|
14449
|
-
|
|
14450
|
-
|
|
14427
|
+
var recordingStoppedAt, inferredType, blob, _a, onSignatureVideoCaptured, recordingStartRequestedAt, recordingStartedAt, firstChunkReceivedAt, signatureStartedAt, signatureEndedAt, recordingStopRequestedAt, lastChunkReceivedAt, mediaInfo;
|
|
14428
|
+
var _b;
|
|
14429
|
+
return __generator(this, function (_c) {
|
|
14430
|
+
switch (_c.label) {
|
|
14431
|
+
case 0:
|
|
14432
|
+
recordingStoppedAt = performance.now();
|
|
14433
|
+
set({
|
|
14434
|
+
recordingStoppedAt: recordingStoppedAt
|
|
14435
|
+
});
|
|
14436
|
+
inferredType = inferBlobType(signatureChunks[0]) || (signatureRecorder === null || signatureRecorder === void 0 ? void 0 : signatureRecorder.mimeType) || 'video/mp4';
|
|
14437
|
+
blob = new Blob(signatureChunks, {
|
|
14438
|
+
type: inferredType
|
|
14439
|
+
});
|
|
14440
|
+
signatureChunks = [];
|
|
14441
|
+
signatureRecorder = null;
|
|
14442
|
+
if (!signatureData) return [2 /*return*/];
|
|
14443
|
+
_a = get(), onSignatureVideoCaptured = _a.onSignatureVideoCaptured, recordingStartRequestedAt = _a.recordingStartRequestedAt, recordingStartedAt = _a.recordingStartedAt, firstChunkReceivedAt = _a.firstChunkReceivedAt, signatureStartedAt = _a.signatureStartedAt, signatureEndedAt = _a.signatureEndedAt, recordingStopRequestedAt = _a.recordingStopRequestedAt, lastChunkReceivedAt = _a.lastChunkReceivedAt;
|
|
14444
|
+
return [4 /*yield*/, (_b = get().mediaInfo) === null || _b === void 0 ? void 0 : _b.analyzeData(blob.size, makeReadChunk(blob))];
|
|
14445
|
+
case 1:
|
|
14446
|
+
mediaInfo = _c.sent();
|
|
14447
|
+
onSignatureVideoCaptured(blob, signatureData, imageUrl !== null && imageUrl !== void 0 ? imageUrl : null, {
|
|
14448
|
+
mediaInfo: mediaInfo,
|
|
14449
|
+
mimeType: inferredType,
|
|
14450
|
+
timingData: {
|
|
14451
|
+
recordingStartRequestedAt: recordingStartRequestedAt,
|
|
14452
|
+
recordingStartedAt: recordingStartedAt,
|
|
14453
|
+
firstChunkReceivedAt: firstChunkReceivedAt,
|
|
14454
|
+
signatureStartedAt: signatureStartedAt,
|
|
14455
|
+
signatureEndedAt: signatureEndedAt,
|
|
14456
|
+
recordingStopRequestedAt: recordingStopRequestedAt,
|
|
14457
|
+
recordingStoppedAt: recordingStoppedAt,
|
|
14458
|
+
lastChunkReceivedAt: lastChunkReceivedAt
|
|
14459
|
+
}
|
|
14460
|
+
});
|
|
14461
|
+
return [2 /*return*/];
|
|
14462
|
+
}
|
|
14451
14463
|
});
|
|
14452
14464
|
});
|
|
14453
14465
|
};
|
|
@@ -14497,7 +14509,9 @@ function waitForOneMoreChunk(timeoutMs) {
|
|
|
14497
14509
|
function VideoSignatureContextProvider(_a) {
|
|
14498
14510
|
var _this = this;
|
|
14499
14511
|
var _b, _c, _d, _e;
|
|
14500
|
-
var children = _a.children
|
|
14512
|
+
var children = _a.children,
|
|
14513
|
+
_f = _a.captureMediaInfo,
|
|
14514
|
+
captureMediaInfo = _f === void 0 ? false : _f;
|
|
14501
14515
|
var videoRef = useCameraStore().videoRef;
|
|
14502
14516
|
var outputCanvas = React.useRef(null);
|
|
14503
14517
|
React.useEffect(function () {
|
|
@@ -14507,27 +14521,31 @@ function VideoSignatureContextProvider(_a) {
|
|
|
14507
14521
|
}, []);
|
|
14508
14522
|
var signatureVideoRef = React.useRef(null);
|
|
14509
14523
|
var frameCheckCanvas = React.useRef(null);
|
|
14510
|
-
|
|
14511
|
-
|
|
14512
|
-
|
|
14513
|
-
|
|
14514
|
-
|
|
14515
|
-
|
|
14516
|
-
|
|
14517
|
-
|
|
14518
|
-
|
|
14519
|
-
|
|
14520
|
-
|
|
14521
|
-
|
|
14522
|
-
|
|
14523
|
-
|
|
14524
|
-
|
|
14525
|
-
|
|
14526
|
-
|
|
14527
|
-
|
|
14528
|
-
|
|
14529
|
-
|
|
14530
|
-
|
|
14524
|
+
React.useEffect(function () {
|
|
14525
|
+
if (!captureMediaInfo) return;
|
|
14526
|
+
mediainfo_js.mediaInfoFactory({
|
|
14527
|
+
format: 'object',
|
|
14528
|
+
full: true,
|
|
14529
|
+
locateFile: function locateFile(filename) {
|
|
14530
|
+
return "".concat(DEFAULT_CDN_URL, "/").concat(filename);
|
|
14531
|
+
}
|
|
14532
|
+
}).then(function (mediaInfo) {
|
|
14533
|
+
useVideoSignatureStore.setState({
|
|
14534
|
+
mediaInfo: mediaInfo
|
|
14535
|
+
});
|
|
14536
|
+
})["catch"](function (e) {
|
|
14537
|
+
warn('error loading mediaInfo', e);
|
|
14538
|
+
});
|
|
14539
|
+
return function () {
|
|
14540
|
+
var mediaInfo = useVideoSignatureStore.getState().mediaInfo;
|
|
14541
|
+
if (mediaInfo) {
|
|
14542
|
+
mediaInfo.close();
|
|
14543
|
+
useVideoSignatureStore.setState({
|
|
14544
|
+
mediaInfo: undefined
|
|
14545
|
+
});
|
|
14546
|
+
}
|
|
14547
|
+
};
|
|
14548
|
+
}, [captureMediaInfo]);
|
|
14531
14549
|
var signaturePadEmpty = useVideoSignatureStore().signaturePadEmpty;
|
|
14532
14550
|
var blankCheckPassed = React.useRef(false);
|
|
14533
14551
|
React.useEffect(function () {
|
|
@@ -14568,40 +14586,15 @@ function VideoSignatureContextProvider(_a) {
|
|
|
14568
14586
|
});
|
|
14569
14587
|
});
|
|
14570
14588
|
}, [videoRef, outputCanvas]);
|
|
14571
|
-
React.
|
|
14572
|
-
|
|
14573
|
-
|
|
14574
|
-
|
|
14575
|
-
|
|
14576
|
-
|
|
14577
|
-
|
|
14578
|
-
|
|
14579
|
-
|
|
14580
|
-
video.requestVideoFrameCallback(onFrame);
|
|
14581
|
-
}
|
|
14582
|
-
video.addEventListener('play', onPlay);
|
|
14583
|
-
return function () {
|
|
14584
|
-
video.removeEventListener('play', onPlay);
|
|
14585
|
-
};
|
|
14586
|
-
}, [drawOutputFrame]);
|
|
14587
|
-
React.useEffect(function () {
|
|
14588
|
-
if (!videoRef.current) return;
|
|
14589
|
-
var video = videoRef.current;
|
|
14590
|
-
function onFrame() {
|
|
14591
|
-
drawOutputFrame();
|
|
14592
|
-
video.requestVideoFrameCallback(onFrame);
|
|
14593
|
-
}
|
|
14594
|
-
function onPlay() {
|
|
14595
|
-
video.requestVideoFrameCallback(onFrame);
|
|
14596
|
-
}
|
|
14597
|
-
video.addEventListener('play', onPlay);
|
|
14598
|
-
return function () {
|
|
14599
|
-
video.removeEventListener('play', onPlay);
|
|
14600
|
-
};
|
|
14601
|
-
}, [drawOutputFrame, videoRef]);
|
|
14602
|
-
var _f = useVideoSignatureStore(),
|
|
14603
|
-
signaturePad = _f.signaturePad,
|
|
14604
|
-
recordingStartedAt = _f.recordingStartedAt;
|
|
14589
|
+
var checkBlankAndDrawOutputFrame = React.useCallback(function () {
|
|
14590
|
+
blankCheckPassed.current || (blankCheckPassed.current = !isVideoBlank(signatureVideoRef.current, frameCheckCanvas.current));
|
|
14591
|
+
drawOutputFrame();
|
|
14592
|
+
}, [drawOutputFrame, signatureVideoRef]);
|
|
14593
|
+
useVideoFrameLoop(signatureVideoRef, checkBlankAndDrawOutputFrame);
|
|
14594
|
+
useVideoFrameLoop(videoRef, drawOutputFrame);
|
|
14595
|
+
var _g = useVideoSignatureStore(),
|
|
14596
|
+
signaturePad = _g.signaturePad,
|
|
14597
|
+
recordingStartedAt = _g.recordingStartedAt;
|
|
14605
14598
|
React.useEffect(function () {
|
|
14606
14599
|
var _a;
|
|
14607
14600
|
if (!signaturePad.current || !recordingStartedAt) return;
|
|
@@ -14641,6 +14634,32 @@ function isCanvasBlank(canvas) {
|
|
|
14641
14634
|
});
|
|
14642
14635
|
return result;
|
|
14643
14636
|
}
|
|
14637
|
+
function requestVideoFrameCallback(video, onFrame) {
|
|
14638
|
+
if (typeof (video === null || video === void 0 ? void 0 : video.requestVideoFrameCallback) === 'function') {
|
|
14639
|
+
video.requestVideoFrameCallback(onFrame);
|
|
14640
|
+
} else {
|
|
14641
|
+
requestAnimationFrame(onFrame);
|
|
14642
|
+
}
|
|
14643
|
+
}
|
|
14644
|
+
function videoFrameLoop(video, onFrame) {
|
|
14645
|
+
if (!video) return;
|
|
14646
|
+
function onFrameRecursive() {
|
|
14647
|
+
onFrame();
|
|
14648
|
+
requestVideoFrameCallback(video, onFrameRecursive);
|
|
14649
|
+
}
|
|
14650
|
+
function onPlay() {
|
|
14651
|
+
requestVideoFrameCallback(video, onFrameRecursive);
|
|
14652
|
+
}
|
|
14653
|
+
video.addEventListener('play', onPlay);
|
|
14654
|
+
return function () {
|
|
14655
|
+
video.removeEventListener('play', onPlay);
|
|
14656
|
+
};
|
|
14657
|
+
}
|
|
14658
|
+
function useVideoFrameLoop(ref, onFrame) {
|
|
14659
|
+
React.useEffect(function () {
|
|
14660
|
+
return videoFrameLoop(ref.current, onFrame);
|
|
14661
|
+
}, [onFrame, ref]);
|
|
14662
|
+
}
|
|
14644
14663
|
|
|
14645
14664
|
function VideoSignaturePad(_a) {
|
|
14646
14665
|
var onAcceptBtnClicked = _a.onAcceptBtnClicked,
|