@newtonschool/react_proctoring_library 0.0.37 → 0.0.39
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/activity-tracker/index.js +0 -22
- package/dist/components/index.js +0 -5
- package/dist/components/permissions/index.js +0 -13
- package/dist/components/permissions/permission-body.js +0 -11
- package/dist/components/proctor-app/Loadable.js +0 -9
- package/dist/components/proctor-app/index.js +4 -30
- package/dist/components/proctor-context-app/Loadable.js +0 -9
- package/dist/components/proctor-context-app/index.js +8 -16
- package/dist/hooks/index.js +0 -3
- package/dist/hooks/useFullScreenData.js +0 -9
- package/dist/hooks/usePageVisibility.js +12 -14
- package/dist/hooks/useWebcamData.js +0 -14
- package/dist/index.js +0 -1
- package/dist/utils/arrayUtils.js +0 -3
- package/dist/utils/breachUtils.js +4 -31
- package/dist/utils/browserUtils.js +12 -20
- package/dist/utils/gpuUtils.js +0 -8
- package/dist/utils/index.js +12 -4
- package/dist/utils/loadable.js +0 -6
- package/dist/utils/webcamMicrophoneUtils.js +16 -62
- package/package.json +1 -1
|
@@ -1,32 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
9
|
var _reactWebcam = _interopRequireDefault(require("react-webcam"));
|
|
13
|
-
|
|
14
10
|
var _utils = require("../../utils");
|
|
15
|
-
|
|
16
11
|
var _breachUtils = require("../../utils/breachUtils");
|
|
17
|
-
|
|
18
12
|
var _browserUtils = require("../../utils/browserUtils");
|
|
19
|
-
|
|
20
13
|
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
21
|
-
|
|
22
14
|
require("./index.scss");
|
|
23
|
-
|
|
24
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
-
|
|
28
17
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
-
|
|
30
18
|
const ActivityTracker = _ref => {
|
|
31
19
|
let {
|
|
32
20
|
proctorParams,
|
|
@@ -40,12 +28,10 @@ const ActivityTracker = _ref => {
|
|
|
40
28
|
(0, _react.useEffect)(() => {
|
|
41
29
|
if (screenshareReference.current) {
|
|
42
30
|
screenshareVideoReference.current.srcObject = screenshareReference.current;
|
|
43
|
-
|
|
44
31
|
screenshareVideoReference.current.onloadedmetadata = e => {
|
|
45
32
|
screenshareVideoReference.current.play();
|
|
46
33
|
};
|
|
47
34
|
}
|
|
48
|
-
|
|
49
35
|
return () => {
|
|
50
36
|
screenshareVideoReference.current.srcObject = null;
|
|
51
37
|
};
|
|
@@ -83,7 +69,6 @@ const ActivityTracker = _ref => {
|
|
|
83
69
|
} = (0, _utils.getAudioVideoPermission)(stream);
|
|
84
70
|
setAudioPermission(audio);
|
|
85
71
|
setVideoPermission(video);
|
|
86
|
-
|
|
87
72
|
stream.onaddtrack = p => {
|
|
88
73
|
const {
|
|
89
74
|
audio,
|
|
@@ -92,7 +77,6 @@ const ActivityTracker = _ref => {
|
|
|
92
77
|
setAudioPermission(audio);
|
|
93
78
|
setVideoPermission(video);
|
|
94
79
|
};
|
|
95
|
-
|
|
96
80
|
stream.onremovetrack = p => {
|
|
97
81
|
const {
|
|
98
82
|
audio,
|
|
@@ -101,7 +85,6 @@ const ActivityTracker = _ref => {
|
|
|
101
85
|
setAudioPermission(audio);
|
|
102
86
|
setVideoPermission(video);
|
|
103
87
|
};
|
|
104
|
-
|
|
105
88
|
stream.onactive = p => {
|
|
106
89
|
const {
|
|
107
90
|
audio,
|
|
@@ -110,24 +93,20 @@ const ActivityTracker = _ref => {
|
|
|
110
93
|
setAudioPermission(audio);
|
|
111
94
|
setVideoPermission(video);
|
|
112
95
|
};
|
|
113
|
-
|
|
114
96
|
stream.oninactive = e => {
|
|
115
97
|
setAudioPermission(false);
|
|
116
98
|
setVideoPermission(false);
|
|
117
99
|
};
|
|
118
|
-
|
|
119
100
|
const audioTracks = stream.getAudioTracks().filter(track => track.enabled && track.label);
|
|
120
101
|
audioTracks.forEach(track => {
|
|
121
102
|
track.onended = e => {
|
|
122
103
|
const audio = (0, _utils.getAudioPermission)(stream);
|
|
123
104
|
setAudioPermission(audio, e.currentTarget.id);
|
|
124
105
|
};
|
|
125
|
-
|
|
126
106
|
track.onmute = e => {
|
|
127
107
|
const audio = (0, _utils.getAudioPermission)(stream);
|
|
128
108
|
setAudioPermission(audio, e.currentTarget.id);
|
|
129
109
|
};
|
|
130
|
-
|
|
131
110
|
track.onunmute = e => {
|
|
132
111
|
const audio = (0, _utils.getAudioPermission)(stream);
|
|
133
112
|
setAudioPermission(audio);
|
|
@@ -159,6 +138,5 @@ const ActivityTracker = _ref => {
|
|
|
159
138
|
id: "ss-ref"
|
|
160
139
|
}));
|
|
161
140
|
};
|
|
162
|
-
|
|
163
141
|
var _default = ActivityTracker;
|
|
164
142
|
exports.default = _default;
|
package/dist/components/index.js
CHANGED
|
@@ -27,13 +27,8 @@ Object.defineProperty(exports, "ProctoredContextApp", {
|
|
|
27
27
|
return _Loadable2.default;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
|
|
31
30
|
var _activityTracker = _interopRequireDefault(require("./activity-tracker"));
|
|
32
|
-
|
|
33
31
|
var _permissions = require("./permissions");
|
|
34
|
-
|
|
35
32
|
var _Loadable = _interopRequireDefault(require("./proctor-app/Loadable"));
|
|
36
|
-
|
|
37
33
|
var _Loadable2 = _interopRequireDefault(require("./proctor-context-app/Loadable"));
|
|
38
|
-
|
|
39
34
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -1,32 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.Permission = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
9
|
var _reactBootstrap = require("react-bootstrap");
|
|
13
|
-
|
|
14
10
|
var _askPermission = _interopRequireDefault(require("../../assets/videos/ask-permission.mp4"));
|
|
15
|
-
|
|
16
11
|
require("./index.scss");
|
|
17
|
-
|
|
18
12
|
var text = _interopRequireWildcard(require("../../constants/text"));
|
|
19
|
-
|
|
20
13
|
var _permissionBody = require("./permission-body");
|
|
21
|
-
|
|
22
14
|
var _breachUtils = require("../../utils/breachUtils");
|
|
23
|
-
|
|
24
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
-
|
|
26
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
-
|
|
28
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
-
|
|
30
18
|
const Permission = _ref => {
|
|
31
19
|
let {
|
|
32
20
|
proctorParams,
|
|
@@ -73,5 +61,4 @@ const Permission = _ref => {
|
|
|
73
61
|
}
|
|
74
62
|
}, text.ALLOW_FULLSCREEN)));
|
|
75
63
|
};
|
|
76
|
-
|
|
77
64
|
exports.Permission = Permission;
|
|
@@ -1,28 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.PermissionBody = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
9
|
var _urlVideoPermissionHighlight = _interopRequireDefault(require("../../assets/images/url-video-permission-highlight.png"));
|
|
13
|
-
|
|
14
10
|
require("./index.scss");
|
|
15
|
-
|
|
16
11
|
var text = _interopRequireWildcard(require("../../constants/text"));
|
|
17
|
-
|
|
18
12
|
var _browserUtils = require("../../utils/browserUtils");
|
|
19
|
-
|
|
20
13
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
-
|
|
22
14
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
-
|
|
24
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
16
|
const PermissionBody = _ref => {
|
|
27
17
|
let {
|
|
28
18
|
showFullscreenText,
|
|
@@ -56,5 +46,4 @@ const PermissionBody = _ref => {
|
|
|
56
46
|
className: "pr-2 font-weight-bold"
|
|
57
47
|
}, "Fullscreen:"), text.PERMISSION_FULLSCREEN));
|
|
58
48
|
};
|
|
59
|
-
|
|
60
49
|
exports.PermissionBody = PermissionBody;
|
|
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/es.promise.js");
|
|
9
|
-
|
|
10
8
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
-
|
|
12
9
|
var _react = _interopRequireDefault(require("react"));
|
|
13
|
-
|
|
14
10
|
var _loadable = _interopRequireDefault(require("../../utils/loadable"));
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
13
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
14
|
var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
|
|
23
15
|
fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
|
|
24
16
|
});
|
|
25
|
-
|
|
26
17
|
exports.default = _default;
|
|
@@ -1,54 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/es.symbol.description.js");
|
|
3
4
|
require("core-js/modules/es.object.assign.js");
|
|
4
|
-
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = exports.ProctorApp = void 0;
|
|
9
|
-
|
|
10
9
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
-
|
|
12
10
|
require("core-js/modules/es.promise.js");
|
|
13
|
-
|
|
14
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
-
|
|
16
12
|
require("./index.scss");
|
|
17
|
-
|
|
18
13
|
var _utils = require("../../utils");
|
|
19
|
-
|
|
20
14
|
var _hooks = require("../../hooks");
|
|
21
|
-
|
|
22
15
|
var _permissions = require("../permissions");
|
|
23
|
-
|
|
24
16
|
var _useWebcamData = _interopRequireDefault(require("../../hooks/useWebcamData"));
|
|
25
|
-
|
|
26
17
|
var _breachUtils = require("../../utils/breachUtils");
|
|
27
|
-
|
|
28
18
|
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
29
|
-
|
|
30
19
|
var _defaults = require("../../constants/defaults");
|
|
31
|
-
|
|
32
20
|
var _activityTracker = _interopRequireDefault(require("../activity-tracker"));
|
|
33
|
-
|
|
34
21
|
var _browserUtils = require("../../utils/browserUtils");
|
|
35
|
-
|
|
36
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
|
-
|
|
38
23
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
|
-
|
|
40
24
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
|
-
|
|
42
25
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
43
|
-
|
|
44
26
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
45
|
-
|
|
46
27
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
47
|
-
|
|
48
|
-
function
|
|
49
|
-
|
|
28
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
29
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
30
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
50
31
|
const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
|
|
51
|
-
|
|
52
32
|
const ProctorApp = _ref => {
|
|
53
33
|
let {
|
|
54
34
|
proctoringIdentifier,
|
|
@@ -93,7 +73,6 @@ const ProctorApp = _ref => {
|
|
|
93
73
|
const sendScreengrab = (0, _react.useCallback)(async function () {
|
|
94
74
|
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
95
75
|
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
96
|
-
|
|
97
76
|
if (proctorParams.screenshareSnapshots && permissions.screenshare) {
|
|
98
77
|
const screenshot = await (0, _webcamMicrophoneUtils.captureScreenshot)();
|
|
99
78
|
getScreengrab(proctoringIdentifier, screenshot, isBreach, breachedParam);
|
|
@@ -102,10 +81,8 @@ const ProctorApp = _ref => {
|
|
|
102
81
|
const sendWebcamSnapshot = (0, _react.useCallback)(function () {
|
|
103
82
|
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
104
83
|
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
105
|
-
|
|
106
84
|
if (proctorParams.webcamSnapshots && permissions.video) {
|
|
107
85
|
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(references.webcamReference);
|
|
108
|
-
|
|
109
86
|
if (references.webcamReference) {
|
|
110
87
|
getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
|
|
111
88
|
}
|
|
@@ -126,7 +103,6 @@ const ProctorApp = _ref => {
|
|
|
126
103
|
sendScreengrab();
|
|
127
104
|
}, recurringFetchInterval);
|
|
128
105
|
}
|
|
129
|
-
|
|
130
106
|
return () => {
|
|
131
107
|
clearInterval(recurringFetchIntervalRef.current);
|
|
132
108
|
};
|
|
@@ -141,7 +117,6 @@ const ProctorApp = _ref => {
|
|
|
141
117
|
};
|
|
142
118
|
const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
|
|
143
119
|
(0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
|
|
144
|
-
|
|
145
120
|
if (breachData) {
|
|
146
121
|
sendProctoredParamValues(true, breachData.breachedParam);
|
|
147
122
|
sendWebcamSnapshot(true, breachData.breachedParam);
|
|
@@ -175,7 +150,6 @@ const ProctorApp = _ref => {
|
|
|
175
150
|
screenshareReference: references.screenshareReference
|
|
176
151
|
}));
|
|
177
152
|
};
|
|
178
|
-
|
|
179
153
|
exports.ProctorApp = ProctorApp;
|
|
180
154
|
var _default = ProctorApp;
|
|
181
155
|
exports.default = _default;
|
|
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/es.promise.js");
|
|
9
|
-
|
|
10
8
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
-
|
|
12
9
|
var _react = _interopRequireDefault(require("react"));
|
|
13
|
-
|
|
14
10
|
var _loadable = _interopRequireDefault(require("../../utils/loadable"));
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
13
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
14
|
var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
|
|
23
15
|
fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
|
|
24
16
|
});
|
|
25
|
-
|
|
26
17
|
exports.default = _default;
|
|
@@ -4,34 +4,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
-
|
|
8
|
+
require("core-js/modules/es.symbol.description.js");
|
|
10
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
10
|
var _hooks = require("../../hooks");
|
|
13
|
-
|
|
14
11
|
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
15
|
-
|
|
16
12
|
var _defaults = require("../../constants/defaults");
|
|
17
|
-
|
|
18
13
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
14
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
23
|
-
|
|
24
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
25
|
-
|
|
26
|
-
function
|
|
27
|
-
|
|
17
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
18
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
19
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
28
20
|
const ProctoredContextApp = _ref => {
|
|
29
21
|
let {
|
|
30
22
|
contextProvider,
|
|
31
23
|
config = {
|
|
32
24
|
proctorParams: _defaults.defaultConfig
|
|
33
25
|
},
|
|
34
|
-
children
|
|
26
|
+
children,
|
|
27
|
+
customContext = {}
|
|
35
28
|
} = _ref;
|
|
36
29
|
const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
|
|
37
30
|
const {
|
|
@@ -77,7 +70,7 @@ const ProctoredContextApp = _ref => {
|
|
|
77
70
|
return hasPermission;
|
|
78
71
|
}, [getPermissionObj]);
|
|
79
72
|
return /*#__PURE__*/_react.default.createElement(Context.Provider, {
|
|
80
|
-
value: {
|
|
73
|
+
value: _objectSpread(_objectSpread({}, customContext), {}, {
|
|
81
74
|
permissions: getPermissionObj,
|
|
82
75
|
permissionSetter: {
|
|
83
76
|
audio: setAudioPermission,
|
|
@@ -100,9 +93,8 @@ const ProctoredContextApp = _ref => {
|
|
|
100
93
|
canvasReference: canvasReference,
|
|
101
94
|
screenshareReference: screenshareReference
|
|
102
95
|
}
|
|
103
|
-
}
|
|
96
|
+
})
|
|
104
97
|
}, children);
|
|
105
98
|
};
|
|
106
|
-
|
|
107
99
|
var _default = ProctoredContextApp;
|
|
108
100
|
exports.default = _default;
|
package/dist/hooks/index.js
CHANGED
|
@@ -15,9 +15,6 @@ Object.defineProperty(exports, "usePageVisibility", {
|
|
|
15
15
|
return _usePageVisibility.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
|
|
19
18
|
var _useFullScreenData = _interopRequireDefault(require("./useFullScreenData"));
|
|
20
|
-
|
|
21
19
|
var _usePageVisibility = _interopRequireDefault(require("./usePageVisibility"));
|
|
22
|
-
|
|
23
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -4,36 +4,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = useFullscreenData;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
-
|
|
10
8
|
var _react = require("react");
|
|
11
|
-
|
|
12
9
|
var _utils = require("../utils");
|
|
13
|
-
|
|
14
10
|
const browserFullscreenElementProp = (0, _utils.getBrowserFullscreenElementProp)();
|
|
15
|
-
|
|
16
11
|
function useFullscreenData(isProctorParam) {
|
|
17
12
|
const fullScreenElement = (0, _react.useRef)(document.documentElement);
|
|
18
13
|
const [isFullscreen, setIsFullscreen] = (0, _react.useState)(document[browserFullscreenElementProp] != null);
|
|
19
|
-
|
|
20
14
|
const setFullscreen = () => {
|
|
21
15
|
if (!fullScreenElement || !fullScreenElement.current) {
|
|
22
16
|
return;
|
|
23
17
|
}
|
|
24
|
-
|
|
25
18
|
fullScreenElement.current.requestFullscreen().then(() => {
|
|
26
19
|
setIsFullscreen(document[browserFullscreenElementProp] != null);
|
|
27
20
|
}).catch(() => {
|
|
28
21
|
setIsFullscreen(false);
|
|
29
22
|
});
|
|
30
23
|
};
|
|
31
|
-
|
|
32
24
|
(0, _react.useEffect)(() => {
|
|
33
25
|
if (isProctorParam) {
|
|
34
26
|
document.onfullscreenchange = () => setIsFullscreen(document[browserFullscreenElementProp] != null);
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
return () => document.onfullscreenchange = undefined;
|
|
38
29
|
}, [isProctorParam]);
|
|
39
30
|
return {
|
|
@@ -4,27 +4,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = usePageVisibility;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
-
|
|
10
8
|
var _react = require("react");
|
|
11
|
-
|
|
12
9
|
var _utils = require("../utils");
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
10
|
+
const focusEvent = (0, _utils.getFocusEventName)();
|
|
11
|
+
const blurEvent = (0, _utils.getBlurEventName)();
|
|
16
12
|
function usePageVisibility(isProctorParam) {
|
|
17
|
-
const [isVisible, setIsVisible] = (0, _react.useState)(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
const [isVisible, setIsVisible] = (0, _react.useState)(true);
|
|
14
|
+
const updateVisibilityOnFocus = () => {
|
|
15
|
+
setIsVisible(true);
|
|
16
|
+
};
|
|
17
|
+
const updateVisibilityOnBlur = () => {
|
|
18
|
+
setIsVisible(false);
|
|
21
19
|
};
|
|
22
|
-
|
|
23
20
|
(0, _react.useEffect)(() => {
|
|
24
|
-
|
|
25
|
-
document.addEventListener(
|
|
21
|
+
document.addEventListener(focusEvent, updateVisibilityOnFocus, false);
|
|
22
|
+
document.addEventListener(blurEvent, updateVisibilityOnBlur, false);
|
|
26
23
|
return () => {
|
|
27
|
-
document.removeEventListener(
|
|
24
|
+
document.removeEventListener(focusEvent, updateVisibilityOnFocus);
|
|
25
|
+
document.removeEventListener(blurEvent, updateVisibilityOnBlur);
|
|
28
26
|
};
|
|
29
27
|
}, []);
|
|
30
28
|
return isVisible && isProctorParam;
|
|
@@ -4,25 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = useWebcamData;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/es.promise.js");
|
|
9
|
-
|
|
10
8
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
-
|
|
12
9
|
var _react = require("react");
|
|
13
|
-
|
|
14
10
|
var cocoSsd = _interopRequireWildcard(require("@tensorflow-models/coco-ssd"));
|
|
15
|
-
|
|
16
11
|
var tf = _interopRequireWildcard(require("@tensorflow/tfjs"));
|
|
17
|
-
|
|
18
12
|
var _utils = require("../utils");
|
|
19
|
-
|
|
20
13
|
var _defaults = require("../constants/defaults");
|
|
21
|
-
|
|
22
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
|
|
24
15
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
-
|
|
26
16
|
const getUserCount = async (model, image) => {
|
|
27
17
|
try {
|
|
28
18
|
let predictions = await model.detect(image);
|
|
@@ -35,7 +25,6 @@ const getUserCount = async (model, image) => {
|
|
|
35
25
|
return numOfUsers;
|
|
36
26
|
} catch (err) {}
|
|
37
27
|
};
|
|
38
|
-
|
|
39
28
|
function useWebcamData(webcamReference, canvasReference, proctorParams) {
|
|
40
29
|
const [userCount, setUserCount] = (0, _react.useState)(_defaults.initialValues.userCount);
|
|
41
30
|
const isWatching = (0, _react.useState)(_defaults.initialValues.isWatching);
|
|
@@ -55,12 +44,10 @@ function useWebcamData(webcamReference, canvasReference, proctorParams) {
|
|
|
55
44
|
const b64Snapshot = webcamReference.current.getScreenshot();
|
|
56
45
|
const webcamSnapShot = new Image(videoWidth, videoHeight);
|
|
57
46
|
webcamSnapShot.src = b64Snapshot;
|
|
58
|
-
|
|
59
47
|
webcamSnapShot.onload = async () => {
|
|
60
48
|
const count = await getUserCount(model, webcamSnapShot);
|
|
61
49
|
setUserCount(count);
|
|
62
50
|
};
|
|
63
|
-
|
|
64
51
|
canvasReference.current.width = videoWidth;
|
|
65
52
|
canvasReference.current.height = videoHeight;
|
|
66
53
|
}
|
|
@@ -69,7 +56,6 @@ function useWebcamData(webcamReference, canvasReference, proctorParams) {
|
|
|
69
56
|
return;
|
|
70
57
|
}
|
|
71
58
|
};
|
|
72
|
-
|
|
73
59
|
loadCocoSSDModel();
|
|
74
60
|
}
|
|
75
61
|
}, [webcamReference, canvasReference, proctorParams.people, proctorParams.lookedAwayCount]);
|
package/dist/index.js
CHANGED
package/dist/utils/arrayUtils.js
CHANGED
|
@@ -4,13 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isArrayValid = void 0;
|
|
7
|
-
|
|
8
7
|
const isArrayValid = array => {
|
|
9
8
|
if (!array || !(array instanceof Array) || array.length <= 0) {
|
|
10
9
|
return false;
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
return true;
|
|
14
12
|
};
|
|
15
|
-
|
|
16
13
|
exports.isArrayValid = isArrayValid;
|
|
@@ -4,63 +4,46 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.showProctoredComponent = exports.isWebcamRequired = exports.getRequiredPermissionsFromProctorParams = exports.getInitialStats = exports.getDataOnBreach = void 0;
|
|
7
|
-
|
|
7
|
+
require("core-js/modules/es.symbol.description.js");
|
|
8
8
|
var _defaults = require("../constants/defaults");
|
|
9
|
-
|
|
10
9
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
11
|
-
|
|
12
10
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
13
|
-
|
|
14
|
-
function
|
|
15
|
-
|
|
11
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
13
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
16
14
|
const getInitialStats = proctorParams => {
|
|
17
15
|
const initialStats = {};
|
|
18
|
-
|
|
19
16
|
if (proctorParams.people) {
|
|
20
17
|
initialStats[_defaults.STATS_PARAMS.userCountMax] = _defaults.initialValues.userCount;
|
|
21
18
|
}
|
|
22
|
-
|
|
23
19
|
if (proctorParams.tabSwitch) {
|
|
24
20
|
initialStats[_defaults.STATS_PARAMS.isTabSwitched] = _defaults.initialValues.isTabSwitched;
|
|
25
21
|
}
|
|
26
|
-
|
|
27
22
|
if (proctorParams.fullscreenExit) {
|
|
28
23
|
initialStats[_defaults.STATS_PARAMS.isFullscreen] = _defaults.initialValues.isFullscreen;
|
|
29
24
|
}
|
|
30
|
-
|
|
31
25
|
if (proctorParams.lookedAway) {
|
|
32
26
|
initialStats[_defaults.STATS_PARAMS.lookedAwayCount] = _defaults.initialValues.lookedAwayCount;
|
|
33
27
|
}
|
|
34
|
-
|
|
35
28
|
return initialStats;
|
|
36
29
|
};
|
|
37
|
-
|
|
38
30
|
exports.getInitialStats = getInitialStats;
|
|
39
|
-
|
|
40
31
|
const getRequiredPermissionsFromProctorParams = proctorParams => {
|
|
41
32
|
const requiredPermissions = [];
|
|
42
|
-
|
|
43
33
|
for (const key in proctorParams) {
|
|
44
34
|
if (proctorParams[key] && _defaults.proctorParamsToPermission[key]) {
|
|
45
35
|
requiredPermissions.push(_defaults.proctorParamsToPermission[key]);
|
|
46
36
|
}
|
|
47
37
|
}
|
|
48
|
-
|
|
49
38
|
return requiredPermissions;
|
|
50
39
|
};
|
|
51
|
-
|
|
52
40
|
exports.getRequiredPermissionsFromProctorParams = getRequiredPermissionsFromProctorParams;
|
|
53
|
-
|
|
54
41
|
const isWebcamRequired = proctorParams => proctorParams.people || proctorParams.lookedAway || proctorParams.webcamSnapshots;
|
|
55
|
-
|
|
56
42
|
exports.isWebcamRequired = isWebcamRequired;
|
|
57
|
-
|
|
58
43
|
const showProctoredComponent = (proctorParams, hasAllPermission) => {
|
|
59
44
|
return hasAllPermission(getRequiredPermissionsFromProctorParams(proctorParams));
|
|
60
45
|
};
|
|
61
|
-
|
|
62
46
|
exports.showProctoredComponent = showProctoredComponent;
|
|
63
|
-
|
|
64
47
|
const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
65
48
|
const {
|
|
66
49
|
userCount,
|
|
@@ -72,7 +55,6 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
72
55
|
const timestamp = Date.now();
|
|
73
56
|
const data = statistics.current;
|
|
74
57
|
const isWebCamNotReliableParam = _defaults.STATS_PARAMS.isWebcamNotReliable;
|
|
75
|
-
|
|
76
58
|
if (isWebcamRequired(proctorParams) && data[isWebCamNotReliableParam]) {
|
|
77
59
|
return {
|
|
78
60
|
breachedParam: isWebCamNotReliableParam,
|
|
@@ -82,9 +64,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
82
64
|
})
|
|
83
65
|
};
|
|
84
66
|
}
|
|
85
|
-
|
|
86
67
|
const userCountMaxParam = _defaults.STATS_PARAMS.userCountMax;
|
|
87
|
-
|
|
88
68
|
if (proctorParams.people && data[userCountMaxParam] < userCount) {
|
|
89
69
|
return {
|
|
90
70
|
breachedParam: userCountMaxParam,
|
|
@@ -94,9 +74,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
94
74
|
})
|
|
95
75
|
};
|
|
96
76
|
}
|
|
97
|
-
|
|
98
77
|
const isTabSwitchedParam = _defaults.STATS_PARAMS.isTabSwitched;
|
|
99
|
-
|
|
100
78
|
if (proctorParams.tabSwitch && isTabSwitched && !data[isTabSwitchedParam]) {
|
|
101
79
|
return {
|
|
102
80
|
breachedParam: isTabSwitchedParam,
|
|
@@ -106,9 +84,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
106
84
|
})
|
|
107
85
|
};
|
|
108
86
|
}
|
|
109
|
-
|
|
110
87
|
const fullscreenExitParam = _defaults.STATS_PARAMS.isFullscreen;
|
|
111
|
-
|
|
112
88
|
if (proctorParams.fullscreenExit && !isFullScreen && data[fullscreenExitParam]) {
|
|
113
89
|
return {
|
|
114
90
|
breachedParam: fullscreenExitParam,
|
|
@@ -118,9 +94,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
118
94
|
})
|
|
119
95
|
};
|
|
120
96
|
}
|
|
121
|
-
|
|
122
97
|
const lookedAwayParam = _defaults.STATS_PARAMS.lookedAwayCount;
|
|
123
|
-
|
|
124
98
|
if (proctorParams.lookedAway && data[lookedAwayParam] !== lookedAwayCount) {
|
|
125
99
|
return {
|
|
126
100
|
breachedParam: lookedAwayParam,
|
|
@@ -131,5 +105,4 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
131
105
|
};
|
|
132
106
|
}
|
|
133
107
|
};
|
|
134
|
-
|
|
135
108
|
exports.getDataOnBreach = getDataOnBreach;
|
|
@@ -3,56 +3,51 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isChrome = exports.getVisibilityChangeEventName = exports.getIsDocumentVisible = exports.getBrowserFullscreenElementProp = void 0;
|
|
7
|
-
|
|
6
|
+
exports.isChrome = exports.getVisibilityChangeEventName = exports.getIsDocumentVisible = exports.getFocusEventName = exports.getBrowserFullscreenElementProp = exports.getBlurEventName = void 0;
|
|
8
7
|
require("core-js/modules/es.regexp.exec.js");
|
|
9
|
-
|
|
10
8
|
require("core-js/modules/es.string.match.js");
|
|
11
|
-
|
|
12
9
|
const PROPERTY_TYPES = {
|
|
13
10
|
HIDDEN: "hidden",
|
|
14
|
-
VISIBILITY_CHANGE: "visibilitychange"
|
|
11
|
+
VISIBILITY_CHANGE: "visibilitychange",
|
|
12
|
+
FOCUS: "focus",
|
|
13
|
+
BLUR: "blur"
|
|
15
14
|
};
|
|
16
|
-
|
|
17
15
|
const getBrowserPropPrefix = () => {
|
|
18
16
|
if (typeof document.msHidden !== "undefined") {
|
|
19
17
|
return "ms";
|
|
20
18
|
} else if (typeof document.webkitHidden !== "undefined") {
|
|
21
19
|
return "webkit";
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
return "";
|
|
25
22
|
};
|
|
26
|
-
|
|
27
23
|
const getBrowserPropForHidden = () => {
|
|
28
24
|
if (typeof document.hidden !== "undefined") {
|
|
29
25
|
return "hidden";
|
|
30
26
|
}
|
|
31
|
-
|
|
32
27
|
return "".concat(getBrowserPropPrefix(), "Hidden");
|
|
33
28
|
};
|
|
34
|
-
|
|
35
29
|
const getBrowserDocumentProp = type => {
|
|
36
30
|
switch (type) {
|
|
37
31
|
case PROPERTY_TYPES.HIDDEN:
|
|
38
32
|
return getBrowserPropForHidden();
|
|
39
|
-
|
|
40
33
|
case PROPERTY_TYPES.VISIBILITY_CHANGE:
|
|
41
34
|
return "".concat(getBrowserPropPrefix(), "visibilitychange");
|
|
42
|
-
|
|
35
|
+
case PROPERTY_TYPES.FOCUS:
|
|
36
|
+
return "focus";
|
|
37
|
+
case PROPERTY_TYPES.BLUR:
|
|
38
|
+
return "blur";
|
|
43
39
|
default:
|
|
44
40
|
return "";
|
|
45
41
|
}
|
|
46
42
|
};
|
|
47
|
-
|
|
48
43
|
const getIsDocumentVisible = () => !document[getBrowserDocumentProp(PROPERTY_TYPES.HIDDEN)];
|
|
49
|
-
|
|
50
44
|
exports.getIsDocumentVisible = getIsDocumentVisible;
|
|
51
|
-
|
|
52
45
|
const getVisibilityChangeEventName = () => getBrowserDocumentProp(PROPERTY_TYPES.VISIBILITY_CHANGE);
|
|
53
|
-
|
|
54
46
|
exports.getVisibilityChangeEventName = getVisibilityChangeEventName;
|
|
55
|
-
|
|
47
|
+
const getFocusEventName = () => getBrowserDocumentProp(PROPERTY_TYPES.FOCUS);
|
|
48
|
+
exports.getFocusEventName = getFocusEventName;
|
|
49
|
+
const getBlurEventName = () => getBrowserDocumentProp(PROPERTY_TYPES.BLUR);
|
|
50
|
+
exports.getBlurEventName = getBlurEventName;
|
|
56
51
|
const getBrowserFullscreenElementProp = () => {
|
|
57
52
|
if (typeof document.fullscreenElement !== "undefined") {
|
|
58
53
|
return "fullscreenElement";
|
|
@@ -64,9 +59,6 @@ const getBrowserFullscreenElementProp = () => {
|
|
|
64
59
|
return "webkitFullscreenElement";
|
|
65
60
|
}
|
|
66
61
|
};
|
|
67
|
-
|
|
68
62
|
exports.getBrowserFullscreenElementProp = getBrowserFullscreenElementProp;
|
|
69
|
-
|
|
70
63
|
const isChrome = () => !!navigator.userAgent.match(/chrome|chromium/i);
|
|
71
|
-
|
|
72
64
|
exports.isChrome = isChrome;
|
package/dist/utils/gpuUtils.js
CHANGED
|
@@ -4,26 +4,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isGPUAvailable = void 0;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
-
|
|
10
8
|
require("core-js/modules/es.array.includes.js");
|
|
11
|
-
|
|
12
9
|
require("core-js/modules/es.string.includes.js");
|
|
13
|
-
|
|
14
10
|
var _defaults = require("../constants/defaults");
|
|
15
|
-
|
|
16
11
|
const isGPUAvailable = () => {
|
|
17
12
|
const canvas = document.createElement("canvas");
|
|
18
13
|
const webgl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
|
|
19
14
|
const debugInfo = webgl.getExtension("webgl_debug_renderer_info");
|
|
20
15
|
const gpu = webgl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL).toLowerCase();
|
|
21
|
-
|
|
22
16
|
for (const gpuType of _defaults.gpuTypes) {
|
|
23
17
|
if (gpu.includes(gpuType)) return true;
|
|
24
18
|
}
|
|
25
|
-
|
|
26
19
|
return false;
|
|
27
20
|
};
|
|
28
|
-
|
|
29
21
|
exports.isGPUAvailable = isGPUAvailable;
|
package/dist/utils/index.js
CHANGED
|
@@ -21,12 +21,24 @@ Object.defineProperty(exports, "getAudioVideoPermission", {
|
|
|
21
21
|
return _webcamMicrophoneUtils.getAudioVideoPermission;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "getBlurEventName", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _browserUtils.getBlurEventName;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
24
30
|
Object.defineProperty(exports, "getBrowserFullscreenElementProp", {
|
|
25
31
|
enumerable: true,
|
|
26
32
|
get: function get() {
|
|
27
33
|
return _browserUtils.getBrowserFullscreenElementProp;
|
|
28
34
|
}
|
|
29
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "getFocusEventName", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _browserUtils.getFocusEventName;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
30
42
|
Object.defineProperty(exports, "getIsDocumentVisible", {
|
|
31
43
|
enumerable: true,
|
|
32
44
|
get: function get() {
|
|
@@ -69,11 +81,7 @@ Object.defineProperty(exports, "updateStatistics", {
|
|
|
69
81
|
return _webcamMicrophoneUtils.updateStatistics;
|
|
70
82
|
}
|
|
71
83
|
});
|
|
72
|
-
|
|
73
84
|
var _webcamMicrophoneUtils = require("./webcamMicrophoneUtils");
|
|
74
|
-
|
|
75
85
|
var _browserUtils = require("./browserUtils");
|
|
76
|
-
|
|
77
86
|
var _arrayUtils = require("./arrayUtils");
|
|
78
|
-
|
|
79
87
|
var _gpuUtils = require("./gpuUtils");
|
package/dist/utils/loadable.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
9
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
-
|
|
14
10
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
-
|
|
16
11
|
const loadable = function loadable(importFunc) {
|
|
17
12
|
let {
|
|
18
13
|
fallback = null
|
|
@@ -24,6 +19,5 @@ const loadable = function loadable(importFunc) {
|
|
|
24
19
|
fallback: fallback
|
|
25
20
|
}, /*#__PURE__*/_react.default.createElement(LazyComponent, props));
|
|
26
21
|
};
|
|
27
|
-
|
|
28
22
|
var _default = loadable;
|
|
29
23
|
exports.default = _default;
|
|
@@ -4,33 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.updateVideoPermissions = exports.updateStatistics = exports.updateAudioPermissions = exports.setupScreensharePermission = exports.isWebcamVideoValid = exports.getVideoPermissionQuery = exports.getVideoPermission = exports.getGlancePercentage = exports.getAudioVideoPermission = exports.getAudioPermissionQuery = exports.getAudioPermission = exports.captureWebcamSnapshot = exports.captureScreenshot = void 0;
|
|
7
|
-
|
|
8
7
|
require("core-js/modules/es.array-buffer.slice.js");
|
|
9
|
-
|
|
10
8
|
require("core-js/modules/es.typed-array.uint8-array.js");
|
|
11
|
-
|
|
12
9
|
require("core-js/modules/es.typed-array.fill.js");
|
|
13
|
-
|
|
14
10
|
require("core-js/modules/es.typed-array.set.js");
|
|
15
|
-
|
|
16
11
|
require("core-js/modules/es.typed-array.sort.js");
|
|
17
|
-
|
|
18
12
|
require("core-js/modules/es.typed-array.to-locale-string.js");
|
|
19
|
-
|
|
20
13
|
require("core-js/modules/es.promise.js");
|
|
21
|
-
|
|
22
14
|
var _ = require(".");
|
|
23
|
-
|
|
24
15
|
var _html2canvas = _interopRequireDefault(require("html2canvas"));
|
|
25
|
-
|
|
26
16
|
var _defaults = require("../constants/defaults");
|
|
27
|
-
|
|
28
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
-
|
|
30
18
|
const isWebcamVideoValid = webcamReference => webcamReference !== null && webcamReference !== undefined && typeof webcamReference.current !== "undefined" && webcamReference.current !== null && webcamReference.current.video.readyState === 4;
|
|
31
|
-
|
|
32
19
|
exports.isWebcamVideoValid = isWebcamVideoValid;
|
|
33
|
-
|
|
34
20
|
const updateStatistics = (statistics, currentStats, proctorParams) => {
|
|
35
21
|
const {
|
|
36
22
|
isTabSwitched,
|
|
@@ -39,44 +25,36 @@ const updateStatistics = (statistics, currentStats, proctorParams) => {
|
|
|
39
25
|
userCount,
|
|
40
26
|
isWebcamDataReliable
|
|
41
27
|
} = currentStats;
|
|
42
|
-
|
|
43
28
|
if (proctorParams.tabSwitch) {
|
|
44
29
|
statistics.current[_defaults.STATS_PARAMS.isTabSwitched] = isTabSwitched;
|
|
45
30
|
}
|
|
46
|
-
|
|
47
31
|
if (proctorParams.fullscreenExit) {
|
|
48
32
|
statistics.current[_defaults.STATS_PARAMS.isFullscreen] = isFullScreen;
|
|
49
33
|
}
|
|
50
|
-
|
|
51
34
|
if (proctorParams.lookedAway) {
|
|
52
35
|
statistics.current[_defaults.STATS_PARAMS.lookedAwayCount] = lookedAwayCount;
|
|
53
36
|
}
|
|
54
|
-
|
|
55
37
|
if (proctorParams.people) {
|
|
56
38
|
statistics.current[_defaults.STATS_PARAMS.userCountMax] = Math.max(userCount, statistics.current[_defaults.STATS_PARAMS.userCountMax]);
|
|
57
39
|
}
|
|
58
|
-
|
|
59
40
|
statistics.current.IS_WEBCAM_DATA_RELIABLE = isWebcamDataReliable;
|
|
60
41
|
};
|
|
61
|
-
|
|
62
42
|
exports.updateStatistics = updateStatistics;
|
|
63
|
-
|
|
64
43
|
const getGlancePercentage = partSegmentation => {
|
|
65
44
|
if (!partSegmentation || !(partSegmentation instanceof Object) || !(0, _.isArrayValid)(partSegmentation.allPoses)) {
|
|
66
45
|
return 0.0;
|
|
67
46
|
}
|
|
68
|
-
|
|
69
47
|
const allPoses = partSegmentation.allPoses;
|
|
70
48
|
let totalScoreLeftEye = 0.0,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
49
|
+
totalScoreRightEye = 0.0,
|
|
50
|
+
totalScoreNose = 0.0,
|
|
51
|
+
totalScoreLeftEar = 0.0,
|
|
52
|
+
totalScoreRightEar = 0.0;
|
|
75
53
|
let noseIndex = 0,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
54
|
+
leftEyeIndex = 1,
|
|
55
|
+
rightEyeIndex = 2,
|
|
56
|
+
leftEarIndex = 3,
|
|
57
|
+
rightEarIndex = 4;
|
|
80
58
|
allPoses.forEach(poseArray => {
|
|
81
59
|
let keypointsArray = poseArray.keypoints;
|
|
82
60
|
totalScoreNose += keypointsArray[noseIndex].score;
|
|
@@ -86,39 +64,31 @@ const getGlancePercentage = partSegmentation => {
|
|
|
86
64
|
totalScoreRightEar += keypointsArray[rightEarIndex].score;
|
|
87
65
|
});
|
|
88
66
|
const avgScoreLeftEye = totalScoreLeftEye / allPoses.length,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
67
|
+
avgScoreRightEye = totalScoreRightEye / allPoses.length,
|
|
68
|
+
avgScoreNose = totalScoreNose / allPoses.length,
|
|
69
|
+
avgScoreLeftEar = totalScoreLeftEar / allPoses.length,
|
|
70
|
+
avgScoreRightEar = totalScoreRightEar / allPoses.length;
|
|
93
71
|
const avgPercentage = 100 * (avgScoreLeftEye + avgScoreRightEye + avgScoreNose + avgScoreLeftEar + avgScoreRightEar) / 5;
|
|
94
72
|
return Math.ceil(avgPercentage);
|
|
95
73
|
};
|
|
96
|
-
|
|
97
74
|
exports.getGlancePercentage = getGlancePercentage;
|
|
98
|
-
|
|
99
75
|
const getVideoPermission = function getVideoPermission(stream) {
|
|
100
76
|
let exludeTrackId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
101
77
|
return stream.getVideoTracks().filter(track => track.enabled && track.label && track.id !== exludeTrackId).length > 0;
|
|
102
78
|
};
|
|
103
|
-
|
|
104
79
|
exports.getVideoPermission = getVideoPermission;
|
|
105
|
-
|
|
106
80
|
const getAudioPermission = function getAudioPermission(stream) {
|
|
107
81
|
let exludeTrackId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
108
82
|
return stream.getAudioTracks().filter(track => track.enabled && track.label && !track.muted && track.id !== exludeTrackId).length > 0;
|
|
109
83
|
};
|
|
110
|
-
|
|
111
84
|
exports.getAudioPermission = getAudioPermission;
|
|
112
|
-
|
|
113
85
|
const getAudioVideoPermission = stream => {
|
|
114
86
|
return {
|
|
115
87
|
audio: getAudioPermission(stream),
|
|
116
88
|
video: getVideoPermission(stream)
|
|
117
89
|
};
|
|
118
90
|
};
|
|
119
|
-
|
|
120
91
|
exports.getAudioVideoPermission = getAudioVideoPermission;
|
|
121
|
-
|
|
122
92
|
const updateAudioPermissions = setAudioPermission => {
|
|
123
93
|
navigator.mediaDevices.getUserMedia({
|
|
124
94
|
audio: true
|
|
@@ -128,9 +98,7 @@ const updateAudioPermissions = setAudioPermission => {
|
|
|
128
98
|
setAudioPermission(false);
|
|
129
99
|
});
|
|
130
100
|
};
|
|
131
|
-
|
|
132
101
|
exports.updateAudioPermissions = updateAudioPermissions;
|
|
133
|
-
|
|
134
102
|
const updateVideoPermissions = setVideoPermission => {
|
|
135
103
|
navigator.mediaDevices.getUserMedia({
|
|
136
104
|
video: true
|
|
@@ -140,18 +108,14 @@ const updateVideoPermissions = setVideoPermission => {
|
|
|
140
108
|
setVideoPermission(false);
|
|
141
109
|
});
|
|
142
110
|
};
|
|
143
|
-
|
|
144
111
|
exports.updateVideoPermissions = updateVideoPermissions;
|
|
145
|
-
|
|
146
112
|
const setupScreensharePermission = (setScreensharePermission, screenshareReference) => navigator.mediaDevices.getDisplayMedia({
|
|
147
113
|
video: true
|
|
148
114
|
}).then(stream => {
|
|
149
115
|
const track = stream.getTracks()[0];
|
|
150
|
-
|
|
151
116
|
if (track.getSettings().displaySurface === "monitor") {
|
|
152
117
|
setScreensharePermission(true);
|
|
153
118
|
screenshareReference.current = stream;
|
|
154
|
-
|
|
155
119
|
track.onended = e => {
|
|
156
120
|
setScreensharePermission(false);
|
|
157
121
|
screenshareReference.current = null;
|
|
@@ -165,52 +129,42 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
|
|
|
165
129
|
screenshareReference.current = null;
|
|
166
130
|
setScreensharePermission(false);
|
|
167
131
|
});
|
|
168
|
-
|
|
169
132
|
exports.setupScreensharePermission = setupScreensharePermission;
|
|
170
|
-
|
|
171
133
|
const getVideoPermissionQuery = () => navigator.permissions.query({
|
|
172
134
|
name: "camera"
|
|
173
135
|
});
|
|
174
|
-
|
|
175
136
|
exports.getVideoPermissionQuery = getVideoPermissionQuery;
|
|
176
|
-
|
|
177
137
|
const getAudioPermissionQuery = () => navigator.permissions.query({
|
|
178
138
|
name: "microphone"
|
|
179
139
|
});
|
|
180
|
-
|
|
181
140
|
exports.getAudioPermissionQuery = getAudioPermissionQuery;
|
|
182
|
-
|
|
183
141
|
const b64DataURItoBlob = dataURI => {
|
|
184
142
|
const byteString = window.atob(dataURI.split(",")[1]);
|
|
185
143
|
const mimeString = dataURI.split(",")[0].split(":")[1].split(";")[0];
|
|
186
144
|
const u8arr = new Uint8Array(byteString.length);
|
|
187
|
-
|
|
188
145
|
for (let i = 0; i < byteString.length; i += 1) {
|
|
189
146
|
u8arr[i] = byteString.charCodeAt(i);
|
|
190
147
|
}
|
|
191
|
-
|
|
192
148
|
return new Blob([u8arr], {
|
|
193
149
|
type: mimeString
|
|
194
150
|
});
|
|
195
151
|
};
|
|
196
|
-
|
|
197
152
|
const captureWebcamSnapshot = webcamReference => {
|
|
198
153
|
try {
|
|
199
154
|
const b64Snapshot = webcamReference.current.getScreenshot();
|
|
200
155
|
return b64DataURItoBlob(b64Snapshot);
|
|
201
|
-
} catch (e) {
|
|
156
|
+
} catch (e) {
|
|
157
|
+
// pass
|
|
202
158
|
}
|
|
203
159
|
};
|
|
204
|
-
|
|
205
160
|
exports.captureWebcamSnapshot = captureWebcamSnapshot;
|
|
206
|
-
|
|
207
161
|
const captureScreenshot = async () => {
|
|
208
162
|
try {
|
|
209
163
|
const canvas = await (0, _html2canvas.default)(document.querySelector("#ss-ref"));
|
|
210
164
|
const b64Snapshot = canvas.toDataURL("image/jpeg");
|
|
211
165
|
return b64DataURItoBlob(b64Snapshot);
|
|
212
|
-
} catch (e) {
|
|
166
|
+
} catch (e) {
|
|
167
|
+
// pass
|
|
213
168
|
}
|
|
214
169
|
};
|
|
215
|
-
|
|
216
170
|
exports.captureScreenshot = captureScreenshot;
|