@newtonschool/react_proctoring_library 0.0.37 → 0.0.38
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 +0 -29
- package/dist/components/proctor-context-app/Loadable.js +0 -9
- package/dist/components/proctor-context-app/index.js +4 -15
- package/dist/hooks/index.js +0 -3
- package/dist/hooks/useFullScreenData.js +0 -9
- package/dist/hooks/usePageVisibility.js +0 -7
- 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 +0 -30
- package/dist/utils/browserUtils.js +0 -18
- package/dist/utils/gpuUtils.js +0 -8
- package/dist/utils/index.js +0 -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,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.object.assign.js");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = exports.ProctorApp = void 0;
|
|
9
|
-
|
|
10
8
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
-
|
|
12
9
|
require("core-js/modules/es.promise.js");
|
|
13
|
-
|
|
14
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
-
|
|
16
11
|
require("./index.scss");
|
|
17
|
-
|
|
18
12
|
var _utils = require("../../utils");
|
|
19
|
-
|
|
20
13
|
var _hooks = require("../../hooks");
|
|
21
|
-
|
|
22
14
|
var _permissions = require("../permissions");
|
|
23
|
-
|
|
24
15
|
var _useWebcamData = _interopRequireDefault(require("../../hooks/useWebcamData"));
|
|
25
|
-
|
|
26
16
|
var _breachUtils = require("../../utils/breachUtils");
|
|
27
|
-
|
|
28
17
|
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
29
|
-
|
|
30
18
|
var _defaults = require("../../constants/defaults");
|
|
31
|
-
|
|
32
19
|
var _activityTracker = _interopRequireDefault(require("../activity-tracker"));
|
|
33
|
-
|
|
34
20
|
var _browserUtils = require("../../utils/browserUtils");
|
|
35
|
-
|
|
36
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
|
-
|
|
38
22
|
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
23
|
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
24
|
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
25
|
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
26
|
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
27
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
49
|
-
|
|
50
28
|
const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
|
|
51
|
-
|
|
52
29
|
const ProctorApp = _ref => {
|
|
53
30
|
let {
|
|
54
31
|
proctoringIdentifier,
|
|
@@ -93,7 +70,6 @@ const ProctorApp = _ref => {
|
|
|
93
70
|
const sendScreengrab = (0, _react.useCallback)(async function () {
|
|
94
71
|
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
95
72
|
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
96
|
-
|
|
97
73
|
if (proctorParams.screenshareSnapshots && permissions.screenshare) {
|
|
98
74
|
const screenshot = await (0, _webcamMicrophoneUtils.captureScreenshot)();
|
|
99
75
|
getScreengrab(proctoringIdentifier, screenshot, isBreach, breachedParam);
|
|
@@ -102,10 +78,8 @@ const ProctorApp = _ref => {
|
|
|
102
78
|
const sendWebcamSnapshot = (0, _react.useCallback)(function () {
|
|
103
79
|
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
104
80
|
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
105
|
-
|
|
106
81
|
if (proctorParams.webcamSnapshots && permissions.video) {
|
|
107
82
|
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(references.webcamReference);
|
|
108
|
-
|
|
109
83
|
if (references.webcamReference) {
|
|
110
84
|
getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
|
|
111
85
|
}
|
|
@@ -126,7 +100,6 @@ const ProctorApp = _ref => {
|
|
|
126
100
|
sendScreengrab();
|
|
127
101
|
}, recurringFetchInterval);
|
|
128
102
|
}
|
|
129
|
-
|
|
130
103
|
return () => {
|
|
131
104
|
clearInterval(recurringFetchIntervalRef.current);
|
|
132
105
|
};
|
|
@@ -141,7 +114,6 @@ const ProctorApp = _ref => {
|
|
|
141
114
|
};
|
|
142
115
|
const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
|
|
143
116
|
(0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
|
|
144
|
-
|
|
145
117
|
if (breachData) {
|
|
146
118
|
sendProctoredParamValues(true, breachData.breachedParam);
|
|
147
119
|
sendWebcamSnapshot(true, breachData.breachedParam);
|
|
@@ -175,7 +147,6 @@ const ProctorApp = _ref => {
|
|
|
175
147
|
screenshareReference: references.screenshareReference
|
|
176
148
|
}));
|
|
177
149
|
};
|
|
178
|
-
|
|
179
150
|
exports.ProctorApp = ProctorApp;
|
|
180
151
|
var _default = ProctorApp;
|
|
181
152
|
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,24 @@ 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
|
-
|
|
10
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
9
|
var _hooks = require("../../hooks");
|
|
13
|
-
|
|
14
10
|
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
15
|
-
|
|
16
11
|
var _defaults = require("../../constants/defaults");
|
|
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
|
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
15
|
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
16
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
|
-
|
|
28
17
|
const ProctoredContextApp = _ref => {
|
|
29
18
|
let {
|
|
30
19
|
contextProvider,
|
|
31
20
|
config = {
|
|
32
21
|
proctorParams: _defaults.defaultConfig
|
|
33
22
|
},
|
|
34
|
-
children
|
|
23
|
+
children,
|
|
24
|
+
customContext = {}
|
|
35
25
|
} = _ref;
|
|
36
26
|
const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
|
|
37
27
|
const {
|
|
@@ -77,7 +67,7 @@ const ProctoredContextApp = _ref => {
|
|
|
77
67
|
return hasPermission;
|
|
78
68
|
}, [getPermissionObj]);
|
|
79
69
|
return /*#__PURE__*/_react.default.createElement(Context.Provider, {
|
|
80
|
-
value: {
|
|
70
|
+
value: _objectSpread(_objectSpread({}, customContext), {}, {
|
|
81
71
|
permissions: getPermissionObj,
|
|
82
72
|
permissionSetter: {
|
|
83
73
|
audio: setAudioPermission,
|
|
@@ -100,9 +90,8 @@ const ProctoredContextApp = _ref => {
|
|
|
100
90
|
canvasReference: canvasReference,
|
|
101
91
|
screenshareReference: screenshareReference
|
|
102
92
|
}
|
|
103
|
-
}
|
|
93
|
+
})
|
|
104
94
|
}, children);
|
|
105
95
|
};
|
|
106
|
-
|
|
107
96
|
var _default = ProctoredContextApp;
|
|
108
97
|
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,22 +4,15 @@ 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
10
|
const visibilityChangeEvent = (0, _utils.getVisibilityChangeEventName)();
|
|
15
|
-
|
|
16
11
|
function usePageVisibility(isProctorParam) {
|
|
17
12
|
const [isVisible, setIsVisible] = (0, _react.useState)((0, _utils.getIsDocumentVisible)());
|
|
18
|
-
|
|
19
13
|
const updateVisibility = () => {
|
|
20
14
|
setIsVisible((0, _utils.getIsDocumentVisible)());
|
|
21
15
|
};
|
|
22
|
-
|
|
23
16
|
(0, _react.useEffect)(() => {
|
|
24
17
|
updateVisibility();
|
|
25
18
|
document.addEventListener(visibilityChangeEvent, updateVisibility, false);
|
|
@@ -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,43 @@ 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
|
-
|
|
8
7
|
var _defaults = require("../constants/defaults");
|
|
9
|
-
|
|
10
8
|
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
9
|
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
10
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
-
|
|
16
11
|
const getInitialStats = proctorParams => {
|
|
17
12
|
const initialStats = {};
|
|
18
|
-
|
|
19
13
|
if (proctorParams.people) {
|
|
20
14
|
initialStats[_defaults.STATS_PARAMS.userCountMax] = _defaults.initialValues.userCount;
|
|
21
15
|
}
|
|
22
|
-
|
|
23
16
|
if (proctorParams.tabSwitch) {
|
|
24
17
|
initialStats[_defaults.STATS_PARAMS.isTabSwitched] = _defaults.initialValues.isTabSwitched;
|
|
25
18
|
}
|
|
26
|
-
|
|
27
19
|
if (proctorParams.fullscreenExit) {
|
|
28
20
|
initialStats[_defaults.STATS_PARAMS.isFullscreen] = _defaults.initialValues.isFullscreen;
|
|
29
21
|
}
|
|
30
|
-
|
|
31
22
|
if (proctorParams.lookedAway) {
|
|
32
23
|
initialStats[_defaults.STATS_PARAMS.lookedAwayCount] = _defaults.initialValues.lookedAwayCount;
|
|
33
24
|
}
|
|
34
|
-
|
|
35
25
|
return initialStats;
|
|
36
26
|
};
|
|
37
|
-
|
|
38
27
|
exports.getInitialStats = getInitialStats;
|
|
39
|
-
|
|
40
28
|
const getRequiredPermissionsFromProctorParams = proctorParams => {
|
|
41
29
|
const requiredPermissions = [];
|
|
42
|
-
|
|
43
30
|
for (const key in proctorParams) {
|
|
44
31
|
if (proctorParams[key] && _defaults.proctorParamsToPermission[key]) {
|
|
45
32
|
requiredPermissions.push(_defaults.proctorParamsToPermission[key]);
|
|
46
33
|
}
|
|
47
34
|
}
|
|
48
|
-
|
|
49
35
|
return requiredPermissions;
|
|
50
36
|
};
|
|
51
|
-
|
|
52
37
|
exports.getRequiredPermissionsFromProctorParams = getRequiredPermissionsFromProctorParams;
|
|
53
|
-
|
|
54
38
|
const isWebcamRequired = proctorParams => proctorParams.people || proctorParams.lookedAway || proctorParams.webcamSnapshots;
|
|
55
|
-
|
|
56
39
|
exports.isWebcamRequired = isWebcamRequired;
|
|
57
|
-
|
|
58
40
|
const showProctoredComponent = (proctorParams, hasAllPermission) => {
|
|
59
41
|
return hasAllPermission(getRequiredPermissionsFromProctorParams(proctorParams));
|
|
60
42
|
};
|
|
61
|
-
|
|
62
43
|
exports.showProctoredComponent = showProctoredComponent;
|
|
63
|
-
|
|
64
44
|
const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
65
45
|
const {
|
|
66
46
|
userCount,
|
|
@@ -72,7 +52,6 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
72
52
|
const timestamp = Date.now();
|
|
73
53
|
const data = statistics.current;
|
|
74
54
|
const isWebCamNotReliableParam = _defaults.STATS_PARAMS.isWebcamNotReliable;
|
|
75
|
-
|
|
76
55
|
if (isWebcamRequired(proctorParams) && data[isWebCamNotReliableParam]) {
|
|
77
56
|
return {
|
|
78
57
|
breachedParam: isWebCamNotReliableParam,
|
|
@@ -82,9 +61,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
82
61
|
})
|
|
83
62
|
};
|
|
84
63
|
}
|
|
85
|
-
|
|
86
64
|
const userCountMaxParam = _defaults.STATS_PARAMS.userCountMax;
|
|
87
|
-
|
|
88
65
|
if (proctorParams.people && data[userCountMaxParam] < userCount) {
|
|
89
66
|
return {
|
|
90
67
|
breachedParam: userCountMaxParam,
|
|
@@ -94,9 +71,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
94
71
|
})
|
|
95
72
|
};
|
|
96
73
|
}
|
|
97
|
-
|
|
98
74
|
const isTabSwitchedParam = _defaults.STATS_PARAMS.isTabSwitched;
|
|
99
|
-
|
|
100
75
|
if (proctorParams.tabSwitch && isTabSwitched && !data[isTabSwitchedParam]) {
|
|
101
76
|
return {
|
|
102
77
|
breachedParam: isTabSwitchedParam,
|
|
@@ -106,9 +81,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
106
81
|
})
|
|
107
82
|
};
|
|
108
83
|
}
|
|
109
|
-
|
|
110
84
|
const fullscreenExitParam = _defaults.STATS_PARAMS.isFullscreen;
|
|
111
|
-
|
|
112
85
|
if (proctorParams.fullscreenExit && !isFullScreen && data[fullscreenExitParam]) {
|
|
113
86
|
return {
|
|
114
87
|
breachedParam: fullscreenExitParam,
|
|
@@ -118,9 +91,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
118
91
|
})
|
|
119
92
|
};
|
|
120
93
|
}
|
|
121
|
-
|
|
122
94
|
const lookedAwayParam = _defaults.STATS_PARAMS.lookedAwayCount;
|
|
123
|
-
|
|
124
95
|
if (proctorParams.lookedAway && data[lookedAwayParam] !== lookedAwayCount) {
|
|
125
96
|
return {
|
|
126
97
|
breachedParam: lookedAwayParam,
|
|
@@ -131,5 +102,4 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
|
|
|
131
102
|
};
|
|
132
103
|
}
|
|
133
104
|
};
|
|
134
|
-
|
|
135
105
|
exports.getDataOnBreach = getDataOnBreach;
|
|
@@ -4,55 +4,40 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isChrome = exports.getVisibilityChangeEventName = exports.getIsDocumentVisible = exports.getBrowserFullscreenElementProp = void 0;
|
|
7
|
-
|
|
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
11
|
VISIBILITY_CHANGE: "visibilitychange"
|
|
15
12
|
};
|
|
16
|
-
|
|
17
13
|
const getBrowserPropPrefix = () => {
|
|
18
14
|
if (typeof document.msHidden !== "undefined") {
|
|
19
15
|
return "ms";
|
|
20
16
|
} else if (typeof document.webkitHidden !== "undefined") {
|
|
21
17
|
return "webkit";
|
|
22
18
|
}
|
|
23
|
-
|
|
24
19
|
return "";
|
|
25
20
|
};
|
|
26
|
-
|
|
27
21
|
const getBrowserPropForHidden = () => {
|
|
28
22
|
if (typeof document.hidden !== "undefined") {
|
|
29
23
|
return "hidden";
|
|
30
24
|
}
|
|
31
|
-
|
|
32
25
|
return "".concat(getBrowserPropPrefix(), "Hidden");
|
|
33
26
|
};
|
|
34
|
-
|
|
35
27
|
const getBrowserDocumentProp = type => {
|
|
36
28
|
switch (type) {
|
|
37
29
|
case PROPERTY_TYPES.HIDDEN:
|
|
38
30
|
return getBrowserPropForHidden();
|
|
39
|
-
|
|
40
31
|
case PROPERTY_TYPES.VISIBILITY_CHANGE:
|
|
41
32
|
return "".concat(getBrowserPropPrefix(), "visibilitychange");
|
|
42
|
-
|
|
43
33
|
default:
|
|
44
34
|
return "";
|
|
45
35
|
}
|
|
46
36
|
};
|
|
47
|
-
|
|
48
37
|
const getIsDocumentVisible = () => !document[getBrowserDocumentProp(PROPERTY_TYPES.HIDDEN)];
|
|
49
|
-
|
|
50
38
|
exports.getIsDocumentVisible = getIsDocumentVisible;
|
|
51
|
-
|
|
52
39
|
const getVisibilityChangeEventName = () => getBrowserDocumentProp(PROPERTY_TYPES.VISIBILITY_CHANGE);
|
|
53
|
-
|
|
54
40
|
exports.getVisibilityChangeEventName = getVisibilityChangeEventName;
|
|
55
|
-
|
|
56
41
|
const getBrowserFullscreenElementProp = () => {
|
|
57
42
|
if (typeof document.fullscreenElement !== "undefined") {
|
|
58
43
|
return "fullscreenElement";
|
|
@@ -64,9 +49,6 @@ const getBrowserFullscreenElementProp = () => {
|
|
|
64
49
|
return "webkitFullscreenElement";
|
|
65
50
|
}
|
|
66
51
|
};
|
|
67
|
-
|
|
68
52
|
exports.getBrowserFullscreenElementProp = getBrowserFullscreenElementProp;
|
|
69
|
-
|
|
70
53
|
const isChrome = () => !!navigator.userAgent.match(/chrome|chromium/i);
|
|
71
|
-
|
|
72
54
|
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
|
@@ -69,11 +69,7 @@ Object.defineProperty(exports, "updateStatistics", {
|
|
|
69
69
|
return _webcamMicrophoneUtils.updateStatistics;
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
|
-
|
|
73
72
|
var _webcamMicrophoneUtils = require("./webcamMicrophoneUtils");
|
|
74
|
-
|
|
75
73
|
var _browserUtils = require("./browserUtils");
|
|
76
|
-
|
|
77
74
|
var _arrayUtils = require("./arrayUtils");
|
|
78
|
-
|
|
79
75
|
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;
|