@newtonschool/react_proctoring_library 0.0.25 → 0.0.28
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/ProctorApp.js +38 -62
- package/dist/components/activity-tracker/index.js +4 -6
- package/dist/components/activity-tracker/index.scss +4 -1
- package/dist/components/index.js +4 -4
- package/dist/components/index.scss +4 -0
- package/dist/components/proctor-app/Loadable.js +26 -0
- package/dist/components/proctor-app/index.js +181 -0
- package/dist/components/proctor-app/index.scss +12 -0
- package/dist/components/proctor-context-app/Loadable.js +26 -0
- package/dist/components/{ProctoredContextApp.js → proctor-context-app/index.js} +23 -24
- package/dist/hooks/useFullScreenData.js +1 -5
- package/dist/hooks/useWebcamData.js +1 -4
- package/dist/utils/loadable.js +29 -0
- package/dist/utils/localStorageUtils.js +33 -0
- package/dist/utils/webcamMicrophoneUtils.js +0 -6
- package/package.json +2 -2
- package/dist/proctoringTracker/tracker.js +0 -17
- package/dist/proctoringTracker/trackerWrapper.js +0 -1
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.object.assign.js");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -15,6 +13,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
15
13
|
|
|
16
14
|
require("./index.scss");
|
|
17
15
|
|
|
16
|
+
var _ = require(".");
|
|
17
|
+
|
|
18
18
|
var _utils = require("../utils");
|
|
19
19
|
|
|
20
20
|
var _hooks = require("../hooks");
|
|
@@ -29,18 +29,12 @@ var _webcamMicrophoneUtils = require("../utils/webcamMicrophoneUtils");
|
|
|
29
29
|
|
|
30
30
|
var _defaults = require("../constants/defaults");
|
|
31
31
|
|
|
32
|
-
var _activityTracker = _interopRequireDefault(require("./activity-tracker"));
|
|
33
|
-
|
|
34
|
-
var _browserUtils = require("../utils/browserUtils");
|
|
35
|
-
|
|
36
32
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
33
|
|
|
38
34
|
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
35
|
|
|
40
36
|
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
37
|
|
|
42
|
-
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
38
|
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
39
|
|
|
46
40
|
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; }
|
|
@@ -52,43 +46,25 @@ const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
|
|
|
52
46
|
const ProctorApp = _ref => {
|
|
53
47
|
let {
|
|
54
48
|
proctoringIdentifier,
|
|
55
|
-
customPermissionView = null,
|
|
56
|
-
shouldRenderChildren = false,
|
|
57
|
-
permissionPassedProps = {},
|
|
58
49
|
children,
|
|
59
|
-
proctoredContext,
|
|
60
50
|
config,
|
|
51
|
+
screensharePermission,
|
|
52
|
+
requestScreenshare = () => {},
|
|
61
53
|
getProctorParamValues = () => {},
|
|
62
54
|
getWebcamSnapshot = () => {},
|
|
63
55
|
getScreengrab = () => {}
|
|
64
56
|
} = _ref;
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const {
|
|
68
|
-
actions,
|
|
69
|
-
permissions,
|
|
70
|
-
references,
|
|
71
|
-
permissionSetter,
|
|
72
|
-
customProps,
|
|
73
|
-
customSetter
|
|
74
|
-
} = context;
|
|
75
|
-
(0, _react.useEffect)(() => {
|
|
76
|
-
if (customProps.childrenRenderer === undefined) {
|
|
77
|
-
setRenderChildren(!shouldRenderChildren);
|
|
78
|
-
} else {
|
|
79
|
-
setRenderChildren(customProps.childrenRenderer);
|
|
80
|
-
}
|
|
81
|
-
}, [customProps]);
|
|
82
|
-
const CustomPermissionView = customPermissionView;
|
|
83
|
-
const browserDetails = {
|
|
84
|
-
isChrome: (0, _browserUtils.isChrome)()
|
|
85
|
-
};
|
|
57
|
+
const webcamReference = (0, _react.useRef)(null);
|
|
58
|
+
const canvasReference = (0, _react.useRef)(null);
|
|
86
59
|
const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
|
|
87
60
|
const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
|
|
88
61
|
const {
|
|
89
62
|
recurring = false,
|
|
90
63
|
recurringFetchInterval = 0
|
|
91
64
|
} = config;
|
|
65
|
+
const [audioPermission, setAudioPermission] = (0, _react.useState)();
|
|
66
|
+
const [videoPermission, setVideoPermission] = (0, _react.useState)();
|
|
67
|
+
const firstFullScreenDone = (0, _react.useRef)(false);
|
|
92
68
|
const recurringFetchIntervalRef = (0, _react.useRef)(null);
|
|
93
69
|
const sendScreengrab = (0, _react.useCallback)(async function () {
|
|
94
70
|
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
@@ -104,9 +80,9 @@ const ProctorApp = _ref => {
|
|
|
104
80
|
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
105
81
|
|
|
106
82
|
if (proctorParams.webcamSnapshots) {
|
|
107
|
-
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(
|
|
83
|
+
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(webcamReference);
|
|
108
84
|
|
|
109
|
-
if (
|
|
85
|
+
if (webcamReference) {
|
|
110
86
|
getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
|
|
111
87
|
}
|
|
112
88
|
}
|
|
@@ -116,8 +92,12 @@ const ProctorApp = _ref => {
|
|
|
116
92
|
let breachParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
117
93
|
getProctorParamValues(proctoringIdentifier, statistics.current, isBreach, breachParam);
|
|
118
94
|
}, [proctoringIdentifier, getProctorParamValues]);
|
|
119
|
-
const
|
|
120
|
-
|
|
95
|
+
const {
|
|
96
|
+
isFullscreen,
|
|
97
|
+
setFullscreen
|
|
98
|
+
} = (0, _hooks.useFullscreenData)(firstFullScreenDone, proctorParams.fullscreenExit);
|
|
99
|
+
const [userCount, lookedAwayCount] = (0, _useWebcamData.default)(webcamReference, canvasReference, proctorParams);
|
|
100
|
+
const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch) && firstFullScreenDone.current;
|
|
121
101
|
(0, _react.useEffect)(() => {
|
|
122
102
|
if (recurring) {
|
|
123
103
|
recurringFetchIntervalRef.current = setInterval(() => {
|
|
@@ -135,9 +115,9 @@ const ProctorApp = _ref => {
|
|
|
135
115
|
const currentStats = {
|
|
136
116
|
userCount,
|
|
137
117
|
isTabSwitched,
|
|
138
|
-
|
|
118
|
+
isFullscreen,
|
|
139
119
|
lookedAwayCount,
|
|
140
|
-
|
|
120
|
+
isWebcamDataReliable: isWebcamProcessingReliable
|
|
141
121
|
};
|
|
142
122
|
const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
|
|
143
123
|
(0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
|
|
@@ -147,32 +127,28 @@ const ProctorApp = _ref => {
|
|
|
147
127
|
sendWebcamSnapshot(true, breachData.breachedParam);
|
|
148
128
|
sendScreengrab(true, breachData.breachedParam);
|
|
149
129
|
}
|
|
150
|
-
}, [userCount, isTabSwitched,
|
|
130
|
+
}, [userCount, isTabSwitched, isFullscreen, lookedAwayCount, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
|
|
151
131
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
152
|
-
className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth" : "fullwidth")
|
|
153
|
-
}, (0, _breachUtils.showProctoredComponent)(proctorParams,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
browserDetails: browserDetails,
|
|
160
|
-
renderChildren: () => {
|
|
161
|
-
setRenderChildren(true);
|
|
162
|
-
customSetter.childrenRenderer(true);
|
|
163
|
-
}
|
|
164
|
-
}, permissionPassedProps)), !((0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren) && !customPermissionView && /*#__PURE__*/_react.default.createElement(_permissions.Permission, {
|
|
132
|
+
className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth fullheight" : "fullwidth fullheight")
|
|
133
|
+
}, (0, _breachUtils.showProctoredComponent)(proctorParams, {
|
|
134
|
+
isFullscreen,
|
|
135
|
+
audioPermission,
|
|
136
|
+
videoPermission,
|
|
137
|
+
screensharePermission
|
|
138
|
+
}) && children, /*#__PURE__*/_react.default.createElement(_permissions.Permission, {
|
|
165
139
|
proctorParams: proctorParams,
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
140
|
+
isFullscreen: isFullscreen,
|
|
141
|
+
audioPermisison: audioPermission,
|
|
142
|
+
videoPermission: videoPermission,
|
|
143
|
+
setFullscreen: setFullscreen,
|
|
144
|
+
screensharePermission: screensharePermission,
|
|
145
|
+
requestScreenshare: requestScreenshare
|
|
146
|
+
}), /*#__PURE__*/_react.default.createElement(_.ActivityTracker, {
|
|
170
147
|
proctorParams: proctorParams,
|
|
171
|
-
setAudioPermission:
|
|
172
|
-
setVideoPermission:
|
|
173
|
-
webcamReference:
|
|
174
|
-
canvasReference:
|
|
175
|
-
screenshareReference: references.screenshareReference
|
|
148
|
+
setAudioPermission: setAudioPermission,
|
|
149
|
+
setVideoPermission: setVideoPermission,
|
|
150
|
+
webcamReference: webcamReference,
|
|
151
|
+
canvasReference: canvasReference
|
|
176
152
|
}));
|
|
177
153
|
};
|
|
178
154
|
|
|
@@ -45,9 +45,7 @@ const ActivityTracker = _ref => {
|
|
|
45
45
|
status.onchange = evt => {
|
|
46
46
|
(0, _webcamMicrophoneUtils.updateVideoPermissions)(setVideoPermission);
|
|
47
47
|
};
|
|
48
|
-
}).catch(err => {
|
|
49
|
-
console.log("Video Permission", err);
|
|
50
|
-
});
|
|
48
|
+
}).catch(err => {});
|
|
51
49
|
(0, _webcamMicrophoneUtils.getAudioPermissionQuery)().then(status => {
|
|
52
50
|
status.onchange = evt => {
|
|
53
51
|
(0, _webcamMicrophoneUtils.updateAudioPermissions)(setAudioPermission);
|
|
@@ -136,14 +134,14 @@ const ActivityTracker = _ref => {
|
|
|
136
134
|
setAudioPermission(false);
|
|
137
135
|
}
|
|
138
136
|
},
|
|
139
|
-
className: "
|
|
137
|
+
className: "hide"
|
|
140
138
|
}), /*#__PURE__*/_react.default.createElement("canvas", {
|
|
141
139
|
ref: canvasReference,
|
|
142
|
-
className: "captured-video-canvas",
|
|
140
|
+
className: "captured-video-canvas hide",
|
|
143
141
|
id: "wc-ref"
|
|
144
142
|
})), /*#__PURE__*/_react.default.createElement("video", {
|
|
145
143
|
ref: screenshareReference,
|
|
146
|
-
className: "captured-video-canvas",
|
|
144
|
+
className: "captured-video-canvas hide",
|
|
147
145
|
id: "ss-ref"
|
|
148
146
|
}));
|
|
149
147
|
};
|
package/dist/components/index.js
CHANGED
|
@@ -18,13 +18,13 @@ Object.defineProperty(exports, "FullScreenPermission", {
|
|
|
18
18
|
Object.defineProperty(exports, "ProctorApp", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function get() {
|
|
21
|
-
return
|
|
21
|
+
return _Loadable.default;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "ProctoredContextApp", {
|
|
25
25
|
enumerable: true,
|
|
26
26
|
get: function get() {
|
|
27
|
-
return
|
|
27
|
+
return _Loadable2.default;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "ScreenshareTracker", {
|
|
@@ -40,8 +40,8 @@ var _permissions = require("./permissions");
|
|
|
40
40
|
|
|
41
41
|
var _screenshare = require("./screenshare");
|
|
42
42
|
|
|
43
|
-
var
|
|
43
|
+
var _Loadable = _interopRequireDefault(require("./proctor-app/Loadable"));
|
|
44
44
|
|
|
45
|
-
var
|
|
45
|
+
var _Loadable2 = _interopRequireDefault(require("./proctor-context-app/Loadable"));
|
|
46
46
|
|
|
47
47
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/es.promise.js");
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _loadable = _interopRequireDefault(require("../../utils/loadable"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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
|
+
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
|
+
var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
|
|
23
|
+
fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
exports.default = _default;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.assign.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.ProctorApp = void 0;
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/es.promise.js");
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
require("./index.scss");
|
|
17
|
+
|
|
18
|
+
var _utils = require("../../utils");
|
|
19
|
+
|
|
20
|
+
var _hooks = require("../../hooks");
|
|
21
|
+
|
|
22
|
+
var _permissions = require("../permissions");
|
|
23
|
+
|
|
24
|
+
var _useWebcamData = _interopRequireDefault(require("../../hooks/useWebcamData"));
|
|
25
|
+
|
|
26
|
+
var _breachUtils = require("../../utils/breachUtils");
|
|
27
|
+
|
|
28
|
+
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
29
|
+
|
|
30
|
+
var _defaults = require("../../constants/defaults");
|
|
31
|
+
|
|
32
|
+
var _activityTracker = _interopRequireDefault(require("../activity-tracker"));
|
|
33
|
+
|
|
34
|
+
var _browserUtils = require("../../utils/browserUtils");
|
|
35
|
+
|
|
36
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
|
+
|
|
38
|
+
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
|
+
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
|
+
function _extends() { _extends = Object.assign || 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
|
+
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
|
+
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 _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
|
+
const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
|
|
51
|
+
|
|
52
|
+
const ProctorApp = _ref => {
|
|
53
|
+
let {
|
|
54
|
+
proctoringIdentifier,
|
|
55
|
+
customPermissionView = null,
|
|
56
|
+
shouldRenderChildren = false,
|
|
57
|
+
permissionPassedProps = {},
|
|
58
|
+
children,
|
|
59
|
+
proctoredContext,
|
|
60
|
+
config,
|
|
61
|
+
getProctorParamValues = () => {},
|
|
62
|
+
getWebcamSnapshot = () => {},
|
|
63
|
+
getScreengrab = () => {}
|
|
64
|
+
} = _ref;
|
|
65
|
+
const [renderChildren, setRenderChildren] = (0, _react.useState)();
|
|
66
|
+
const context = (0, _react.useContext)(proctoredContext);
|
|
67
|
+
const {
|
|
68
|
+
actions,
|
|
69
|
+
permissions,
|
|
70
|
+
references,
|
|
71
|
+
permissionSetter,
|
|
72
|
+
customProps,
|
|
73
|
+
customSetter
|
|
74
|
+
} = context;
|
|
75
|
+
(0, _react.useEffect)(() => {
|
|
76
|
+
if (customProps.childrenRenderer === undefined) {
|
|
77
|
+
setRenderChildren(!shouldRenderChildren);
|
|
78
|
+
} else {
|
|
79
|
+
setRenderChildren(customProps.childrenRenderer);
|
|
80
|
+
}
|
|
81
|
+
}, [customProps]);
|
|
82
|
+
const CustomPermissionView = customPermissionView;
|
|
83
|
+
const browserDetails = {
|
|
84
|
+
isChrome: (0, _browserUtils.isChrome)()
|
|
85
|
+
};
|
|
86
|
+
const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
|
|
87
|
+
const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
|
|
88
|
+
const {
|
|
89
|
+
recurring = false,
|
|
90
|
+
recurringFetchInterval = 0
|
|
91
|
+
} = config;
|
|
92
|
+
const recurringFetchIntervalRef = (0, _react.useRef)(null);
|
|
93
|
+
const sendScreengrab = (0, _react.useCallback)(async function () {
|
|
94
|
+
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
95
|
+
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
96
|
+
|
|
97
|
+
if (proctorParams.screenshareSnapshots && permissions.screenshare) {
|
|
98
|
+
const screenshot = await (0, _webcamMicrophoneUtils.captureScreenshot)();
|
|
99
|
+
getScreengrab(proctoringIdentifier, screenshot, isBreach, breachedParam);
|
|
100
|
+
}
|
|
101
|
+
}, [getScreengrab, proctoringIdentifier, proctorParams.screenshareSnapshots, permissions.screenshare]);
|
|
102
|
+
const sendWebcamSnapshot = (0, _react.useCallback)(function () {
|
|
103
|
+
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
104
|
+
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
105
|
+
|
|
106
|
+
if (proctorParams.webcamSnapshots && permissions.video) {
|
|
107
|
+
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(references.webcamReference);
|
|
108
|
+
|
|
109
|
+
if (references.webcamReference) {
|
|
110
|
+
getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}, [proctoringIdentifier, getWebcamSnapshot, proctorParams.webcamSnapshots, permissions.video, references.webcamReference]);
|
|
114
|
+
const sendProctoredParamValues = (0, _react.useCallback)(function () {
|
|
115
|
+
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
116
|
+
let breachParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
117
|
+
getProctorParamValues(proctoringIdentifier, statistics.current, isBreach, breachParam);
|
|
118
|
+
}, [proctoringIdentifier, getProctorParamValues]);
|
|
119
|
+
const [userCount, lookedAwayCount] = (0, _useWebcamData.default)(references.webcamReference, references.canvasReference, proctorParams);
|
|
120
|
+
const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch);
|
|
121
|
+
(0, _react.useEffect)(() => {
|
|
122
|
+
if (recurring) {
|
|
123
|
+
recurringFetchIntervalRef.current = setInterval(() => {
|
|
124
|
+
sendProctoredParamValues();
|
|
125
|
+
sendWebcamSnapshot();
|
|
126
|
+
sendScreengrab();
|
|
127
|
+
}, recurringFetchInterval);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return () => {
|
|
131
|
+
clearInterval(recurringFetchIntervalRef.current);
|
|
132
|
+
};
|
|
133
|
+
}, [recurring, recurringFetchInterval, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab]);
|
|
134
|
+
(0, _react.useEffect)(() => {
|
|
135
|
+
const currentStats = {
|
|
136
|
+
userCount,
|
|
137
|
+
isTabSwitched,
|
|
138
|
+
isFullScreen: permissions.fullscreen,
|
|
139
|
+
lookedAwayCount,
|
|
140
|
+
isWebcamDataNotReliable: !isWebcamProcessingReliable
|
|
141
|
+
};
|
|
142
|
+
const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
|
|
143
|
+
(0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
|
|
144
|
+
|
|
145
|
+
if (breachData) {
|
|
146
|
+
sendProctoredParamValues(true, breachData.breachedParam);
|
|
147
|
+
sendWebcamSnapshot(true, breachData.breachedParam);
|
|
148
|
+
sendScreengrab(true, breachData.breachedParam);
|
|
149
|
+
}
|
|
150
|
+
}, [userCount, isTabSwitched, permissions.fullscreen, lookedAwayCount, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
|
|
151
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
152
|
+
className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth fullheight" : "fullwidth fullheight")
|
|
153
|
+
}, (0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren && children, !((0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren) && customPermissionView && /*#__PURE__*/_react.default.createElement(CustomPermissionView, _extends({
|
|
154
|
+
permissions: permissions,
|
|
155
|
+
hasAllPermission: actions.hasAllPermission,
|
|
156
|
+
askPermission: actions.askPermission,
|
|
157
|
+
references: references,
|
|
158
|
+
actions: actions,
|
|
159
|
+
browserDetails: browserDetails,
|
|
160
|
+
renderChildren: () => {
|
|
161
|
+
setRenderChildren(true);
|
|
162
|
+
customSetter.childrenRenderer(true);
|
|
163
|
+
}
|
|
164
|
+
}, permissionPassedProps)), !((0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren) && !customPermissionView && /*#__PURE__*/_react.default.createElement(_permissions.Permission, {
|
|
165
|
+
proctorParams: proctorParams,
|
|
166
|
+
permissions: permissions,
|
|
167
|
+
askPermission: actions.askPermission,
|
|
168
|
+
hasAllPermission: actions.hasAllPermission
|
|
169
|
+
}), /*#__PURE__*/_react.default.createElement(_activityTracker.default, {
|
|
170
|
+
proctorParams: proctorParams,
|
|
171
|
+
setAudioPermission: permissionSetter.audio,
|
|
172
|
+
setVideoPermission: permissionSetter.video,
|
|
173
|
+
webcamReference: references.webcamReference,
|
|
174
|
+
canvasReference: references.canvasReference,
|
|
175
|
+
screenshareReference: references.screenshareReference
|
|
176
|
+
}));
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
exports.ProctorApp = ProctorApp;
|
|
180
|
+
var _default = ProctorApp;
|
|
181
|
+
exports.default = _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/es.promise.js");
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _loadable = _interopRequireDefault(require("../../utils/loadable"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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
|
+
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
|
+
var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
|
|
23
|
+
fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
exports.default = _default;
|
|
@@ -9,11 +9,11 @@ require("core-js/modules/web.dom-collections.iterator.js");
|
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
|
|
12
|
-
var _hooks = require("
|
|
12
|
+
var _hooks = require("../../hooks");
|
|
13
13
|
|
|
14
|
-
var _webcamMicrophoneUtils = require("
|
|
14
|
+
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
15
15
|
|
|
16
|
-
var _defaults = require("
|
|
16
|
+
var _defaults = require("../../constants/defaults");
|
|
17
17
|
|
|
18
18
|
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
19
|
|
|
@@ -46,22 +46,21 @@ const ProctoredContextApp = _ref => {
|
|
|
46
46
|
const canvasReference = (0, _react.useRef)(null);
|
|
47
47
|
const screenshareReference = (0, _react.useRef)(null);
|
|
48
48
|
const Context = contextProvider;
|
|
49
|
-
const askPermissionAction = {
|
|
50
|
-
|
|
49
|
+
const askPermissionAction = (0, _react.useMemo)(() => ({
|
|
50
|
+
screenshare: () => {
|
|
51
51
|
(0, _webcamMicrophoneUtils.setupScreensharePermission)(setScreensharePermission, screenshareReference);
|
|
52
52
|
},
|
|
53
|
-
|
|
53
|
+
fullscreen: () => {
|
|
54
54
|
setFullscreen();
|
|
55
55
|
}
|
|
56
|
-
};
|
|
57
|
-
const getPermissionObj = {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
};
|
|
56
|
+
}), [screenshareReference, setFullscreen]);
|
|
57
|
+
const getPermissionObj = (0, _react.useMemo)(() => ({
|
|
58
|
+
video: videoPermission,
|
|
59
|
+
audio: audioPermisison,
|
|
60
|
+
fullscreen: isFullscreen,
|
|
61
|
+
screenshare: screensharePermission
|
|
62
|
+
}), [videoPermission, audioPermisison, isFullscreen, screensharePermission]);
|
|
63
63
|
const askPermission = (0, _react.useCallback)(requiredPermissions => {
|
|
64
|
-
console.log(requiredPermissions);
|
|
65
64
|
requiredPermissions.forEach(element => {
|
|
66
65
|
if (!getPermissionObj[element] && askPermissionAction[element]) {
|
|
67
66
|
askPermissionAction[element]();
|
|
@@ -81,25 +80,25 @@ const ProctoredContextApp = _ref => {
|
|
|
81
80
|
value: {
|
|
82
81
|
permissions: getPermissionObj,
|
|
83
82
|
permissionSetter: {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
audio: setAudioPermission,
|
|
84
|
+
video: setVideoPermission,
|
|
85
|
+
screenshare: setScreensharePermission
|
|
87
86
|
},
|
|
88
87
|
customProps: {
|
|
89
|
-
|
|
88
|
+
childrenRenderer: customRenderer
|
|
90
89
|
},
|
|
91
90
|
customSetter: {
|
|
92
|
-
|
|
91
|
+
childrenRenderer: setCustomRenderer
|
|
93
92
|
},
|
|
94
93
|
proctorParams,
|
|
95
94
|
actions: {
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
askPermission: askPermission,
|
|
96
|
+
hasAllPermission: hasAllPermission
|
|
98
97
|
},
|
|
99
98
|
references: {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
webcamReference: webcamReference,
|
|
100
|
+
canvasReference: canvasReference,
|
|
101
|
+
screenshareReference: screenshareReference
|
|
103
102
|
}
|
|
104
103
|
}
|
|
105
104
|
}, children);
|
|
@@ -7,14 +7,10 @@ exports.default = useFullscreenData;
|
|
|
7
7
|
|
|
8
8
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
9
|
|
|
10
|
-
var _react =
|
|
10
|
+
var _react = require("react");
|
|
11
11
|
|
|
12
12
|
var _utils = require("../utils");
|
|
13
13
|
|
|
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); }
|
|
15
|
-
|
|
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; }
|
|
17
|
-
|
|
18
14
|
const browserFullscreenElementProp = (0, _utils.getBrowserFullscreenElementProp)();
|
|
19
15
|
|
|
20
16
|
function useFullscreenData(isProctorParam) {
|
|
@@ -33,9 +33,7 @@ const getUserCount = async (model, image) => {
|
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
35
|
return numOfUsers;
|
|
36
|
-
} catch (err) {
|
|
37
|
-
console.log("Error Trace:", err);
|
|
38
|
-
}
|
|
36
|
+
} catch (err) {}
|
|
39
37
|
};
|
|
40
38
|
|
|
41
39
|
function useWebcamData(webcamReference, canvasReference, proctorParams) {
|
|
@@ -68,7 +66,6 @@ function useWebcamData(webcamReference, canvasReference, proctorParams) {
|
|
|
68
66
|
}
|
|
69
67
|
}, _defaults.evaluateVideoIntervalInSeconds * 1000);
|
|
70
68
|
} catch (err) {
|
|
71
|
-
console.log("Error Trace:", err);
|
|
72
69
|
return;
|
|
73
70
|
}
|
|
74
71
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
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); }
|
|
13
|
+
|
|
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; }
|
|
15
|
+
|
|
16
|
+
const loadable = function loadable(importFunc) {
|
|
17
|
+
let {
|
|
18
|
+
fallback = null
|
|
19
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
20
|
+
fallback: null
|
|
21
|
+
};
|
|
22
|
+
const LazyComponent = /*#__PURE__*/(0, _react.lazy)(importFunc);
|
|
23
|
+
return props => /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
24
|
+
fallback: fallback
|
|
25
|
+
}, /*#__PURE__*/_react.default.createElement(LazyComponent, props));
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
var _default = loadable;
|
|
29
|
+
exports.default = _default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.retrieveStatsFromLocalStorage = exports.removeStatsFromLocalStorage = exports.getStatistics = exports.addOrUpdateStatsToLocalStorage = void 0;
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/es.json.stringify.js");
|
|
9
|
+
|
|
10
|
+
const addOrUpdateStatsToLocalStorage = (proctoringIdentifier, data) => {
|
|
11
|
+
const stringifiedData = JSON.stringify(data);
|
|
12
|
+
localStorage.setItem(proctoringIdentifier, stringifiedData);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.addOrUpdateStatsToLocalStorage = addOrUpdateStatsToLocalStorage;
|
|
16
|
+
|
|
17
|
+
const retrieveStatsFromLocalStorage = proctoringIdentifier => {
|
|
18
|
+
return localStorage.getItem(proctoringIdentifier);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.retrieveStatsFromLocalStorage = retrieveStatsFromLocalStorage;
|
|
22
|
+
|
|
23
|
+
const removeStatsFromLocalStorage = proctoringIdentifier => {
|
|
24
|
+
localStorage.removeItem(proctoringIdentifier);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.removeStatsFromLocalStorage = removeStatsFromLocalStorage;
|
|
28
|
+
|
|
29
|
+
const getStatistics = proctoringIdentifier => {
|
|
30
|
+
return JSON.parse(retrieveStatsFromLocalStorage(proctoringIdentifier));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.getStatistics = getStatistics;
|
|
@@ -13,8 +13,6 @@ require("core-js/modules/es.array-buffer.slice.js");
|
|
|
13
13
|
|
|
14
14
|
require("core-js/modules/es.typed-array.uint8-array.js");
|
|
15
15
|
|
|
16
|
-
require("core-js/modules/es.typed-array.fill.js");
|
|
17
|
-
|
|
18
16
|
require("core-js/modules/es.typed-array.set.js");
|
|
19
17
|
|
|
20
18
|
require("core-js/modules/es.typed-array.sort.js");
|
|
@@ -162,17 +160,14 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
|
|
|
162
160
|
|
|
163
161
|
track.onended = e => {
|
|
164
162
|
setScreensharePermission(false);
|
|
165
|
-
console.log(e, "Track Onended Error");
|
|
166
163
|
screenshareReference.current.srcObject = null;
|
|
167
164
|
};
|
|
168
165
|
} else {
|
|
169
|
-
console.log("Display Surface != Monitor");
|
|
170
166
|
screenshareReference.current = null;
|
|
171
167
|
setScreensharePermission(false);
|
|
172
168
|
}
|
|
173
169
|
}).catch(e => {
|
|
174
170
|
screenshareReference.current = null;
|
|
175
|
-
console.log(e, "Try Catch Error");
|
|
176
171
|
setScreensharePermission(false);
|
|
177
172
|
});
|
|
178
173
|
|
|
@@ -218,7 +213,6 @@ const captureScreenshot = async () => {
|
|
|
218
213
|
try {
|
|
219
214
|
const canvas = await (0, _html2canvas.default)(document.querySelector("#ss-ref"));
|
|
220
215
|
const b64Snapshot = canvas.toDataURL("image/jpeg");
|
|
221
|
-
console.log(b64Snapshot);
|
|
222
216
|
return b64DataURItoBlob(b64Snapshot);
|
|
223
217
|
} catch (e) {// pass
|
|
224
218
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newtonschool/react_proctoring_library",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"description": "Used to proctor online tests",
|
|
5
5
|
"author": "ayushkagrawal,shreyachandra,weastel",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -54,4 +54,4 @@
|
|
|
54
54
|
"@babel/preset-env": "^7.16.7",
|
|
55
55
|
"react-scripts": ">=5.0.0"
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
class ProctoringTracker {
|
|
9
|
-
constructor() {}
|
|
10
|
-
|
|
11
|
-
askProctoredPermission() {}
|
|
12
|
-
|
|
13
|
-
hasProctoredPermission() {}
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
exports.default = ProctoringTracker;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|