@newtonschool/react_proctoring_library 0.0.17 → 0.0.18
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 +9 -9
- package/dist/components/activity-tracker/index.js +2 -7
- package/dist/components/index.js +8 -0
- package/dist/components/index.scss +8 -0
- package/dist/components/permissions/index.js +2 -2
- package/dist/components/permissions/permission-body.js +1 -1
- package/dist/components/screenshare/index.js +40 -0
- package/dist/components/screenshare/index.scss +4 -0
- package/dist/constants/defaults.js +2 -1
- package/dist/index.js +6 -0
- package/dist/utils/webcamMicrophoneUtils.js +2 -2
- package/package.json +1 -1
|
@@ -11,6 +11,8 @@ require("core-js/modules/es.promise.js");
|
|
|
11
11
|
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
|
|
14
|
+
require("./index.scss");
|
|
15
|
+
|
|
14
16
|
var _ = require(".");
|
|
15
17
|
|
|
16
18
|
var _utils = require("../utils");
|
|
@@ -46,13 +48,14 @@ const ProctorApp = _ref => {
|
|
|
46
48
|
proctoringIdentifier,
|
|
47
49
|
children,
|
|
48
50
|
config,
|
|
51
|
+
screensharePermission,
|
|
52
|
+
requestScreenshare = () => {},
|
|
49
53
|
getProctorParamValues = () => {},
|
|
50
54
|
getWebcamSnapshot = () => {},
|
|
51
55
|
getScreengrab = () => {}
|
|
52
56
|
} = _ref;
|
|
53
57
|
const webcamReference = (0, _react.useRef)(null);
|
|
54
58
|
const canvasReference = (0, _react.useRef)(null);
|
|
55
|
-
const screenshareReference = (0, _react.useRef)(null);
|
|
56
59
|
const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
|
|
57
60
|
const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
|
|
58
61
|
const {
|
|
@@ -61,7 +64,6 @@ const ProctorApp = _ref => {
|
|
|
61
64
|
} = config;
|
|
62
65
|
const [audioPermission, setAudioPermission] = (0, _react.useState)();
|
|
63
66
|
const [videoPermission, setVideoPermission] = (0, _react.useState)();
|
|
64
|
-
const [screensharePermission, setScreensharePermission] = (0, _react.useState)(!proctorParams.screenshareSnapshots);
|
|
65
67
|
const firstFullScreenDone = (0, _react.useRef)(false);
|
|
66
68
|
const recurringFetchIntervalRef = (0, _react.useRef)(null);
|
|
67
69
|
const sendScreengrab = (0, _react.useCallback)(async function () {
|
|
@@ -126,10 +128,9 @@ const ProctorApp = _ref => {
|
|
|
126
128
|
sendScreengrab(true, breachData.breachedParam);
|
|
127
129
|
}
|
|
128
130
|
}, [userCount, isTabSwitched, isFullscreen, lookedAwayCount, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
},
|
|
132
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _breachUtils.showProctoredComponent)(proctorParams, {
|
|
131
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
132
|
+
className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth" : "fullwidth")
|
|
133
|
+
}, (0, _breachUtils.showProctoredComponent)(proctorParams, {
|
|
133
134
|
isFullscreen,
|
|
134
135
|
audioPermission,
|
|
135
136
|
videoPermission,
|
|
@@ -141,14 +142,13 @@ const ProctorApp = _ref => {
|
|
|
141
142
|
videoPermission: videoPermission,
|
|
142
143
|
setFullscreen: setFullscreen,
|
|
143
144
|
screensharePermission: screensharePermission,
|
|
144
|
-
|
|
145
|
+
requestScreenshare: requestScreenshare
|
|
145
146
|
}), /*#__PURE__*/_react.default.createElement(_.ActivityTracker, {
|
|
146
147
|
proctorParams: proctorParams,
|
|
147
148
|
setAudioPermission: setAudioPermission,
|
|
148
149
|
setVideoPermission: setVideoPermission,
|
|
149
150
|
webcamReference: webcamReference,
|
|
150
|
-
canvasReference: canvasReference
|
|
151
|
-
screenshareReference: screenshareReference
|
|
151
|
+
canvasReference: canvasReference
|
|
152
152
|
}));
|
|
153
153
|
};
|
|
154
154
|
|
|
@@ -33,8 +33,7 @@ const ActivityTracker = _ref => {
|
|
|
33
33
|
webcamReference,
|
|
34
34
|
canvasReference,
|
|
35
35
|
setAudioPermission,
|
|
36
|
-
setVideoPermission
|
|
37
|
-
screenshareReference
|
|
36
|
+
setVideoPermission
|
|
38
37
|
} = _ref;
|
|
39
38
|
(0, _react.useEffect)(() => {
|
|
40
39
|
if ((0, _browserUtils.isChrome)()) {
|
|
@@ -141,11 +140,7 @@ const ActivityTracker = _ref => {
|
|
|
141
140
|
ref: canvasReference,
|
|
142
141
|
className: "captured-video-canvas",
|
|
143
142
|
id: "wc-ref"
|
|
144
|
-
}))
|
|
145
|
-
ref: screenshareReference,
|
|
146
|
-
className: "captured-video-canvas",
|
|
147
|
-
id: "ss-ref"
|
|
148
|
-
}));
|
|
143
|
+
})));
|
|
149
144
|
};
|
|
150
145
|
|
|
151
146
|
var _default = ActivityTracker;
|
package/dist/components/index.js
CHANGED
|
@@ -21,11 +21,19 @@ Object.defineProperty(exports, "ProctorApp", {
|
|
|
21
21
|
return _ProctorApp.default;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "ScreenshareTracker", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _screenshare.ScreenshareTracker;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
24
30
|
|
|
25
31
|
var _activityTracker = _interopRequireDefault(require("./activity-tracker"));
|
|
26
32
|
|
|
27
33
|
var _permissions = require("./permissions");
|
|
28
34
|
|
|
35
|
+
var _screenshare = require("./screenshare");
|
|
36
|
+
|
|
29
37
|
var _ProctorApp = _interopRequireDefault(require("./ProctorApp"));
|
|
30
38
|
|
|
31
39
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -35,7 +35,7 @@ const Permission = _ref => {
|
|
|
35
35
|
videoPermission,
|
|
36
36
|
setFullscreen,
|
|
37
37
|
screensharePermission,
|
|
38
|
-
|
|
38
|
+
requestScreenshare
|
|
39
39
|
} = _ref;
|
|
40
40
|
const showPermissionModal = isFullscreen === false || (0, _breachUtils.isWebcamRequired)(proctorParams) && audioPermisison === false || (0, _breachUtils.isWebcamRequired)(proctorParams) && videoPermission === false || !screensharePermission;
|
|
41
41
|
return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal, {
|
|
@@ -67,7 +67,7 @@ const Permission = _ref => {
|
|
|
67
67
|
showScreensharePermission: !screensharePermission && proctorParams.screenshareSnapshots
|
|
68
68
|
})), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Footer, null, !screensharePermission && proctorParams.screenshareSnapshots && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
69
69
|
onClick: () => {
|
|
70
|
-
|
|
70
|
+
requestScreenshare();
|
|
71
71
|
}
|
|
72
72
|
}, text.ALLOW_SCREENSHARE), screensharePermission && !isFullscreen && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
73
73
|
variant: "primary",
|
|
@@ -34,7 +34,7 @@ const PermissionBody = _ref => {
|
|
|
34
34
|
className: "mb-2"
|
|
35
35
|
}, text.PERMISSION_GENERIC), showScreensharePermission && /*#__PURE__*/_react.default.createElement("div", {
|
|
36
36
|
className: "mb-2"
|
|
37
|
-
}, (0, _browserUtils.isChrome)() && /*#__PURE__*/_react.default.createElement("strong", null, "Please switch to chrome"), /*#__PURE__*/_react.default.createElement("span", {
|
|
37
|
+
}, !(0, _browserUtils.isChrome)() && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("strong", null, "Please switch to chrome"), /*#__PURE__*/_react.default.createElement("br", null)), /*#__PURE__*/_react.default.createElement("span", {
|
|
38
38
|
className: "pr-2 font-weight-bold"
|
|
39
39
|
}, "Screenshare:"), text.PERMISSION_SCREENSHARE), showAudioPermissionText && showVideoPermissionText ? /*#__PURE__*/_react.default.createElement("div", {
|
|
40
40
|
className: "mb-2"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ScreenshareTracker = void 0;
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
|
|
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
|
+
const ScreenshareTracker = _ref => {
|
|
19
|
+
let {
|
|
20
|
+
triggerRequestPermission,
|
|
21
|
+
permissionChangeCallback
|
|
22
|
+
} = _ref;
|
|
23
|
+
const [screensharePermission, setScreensharePermission] = (0, _react.useState)();
|
|
24
|
+
const screenshareReference = (0, _react.useRef)(null);
|
|
25
|
+
(0, _react.useEffect)(() => {
|
|
26
|
+
permissionChangeCallback(screensharePermission);
|
|
27
|
+
}, [screensharePermission, permissionChangeCallback]);
|
|
28
|
+
(0, _react.useEffect)(() => {
|
|
29
|
+
if (triggerRequestPermission) {
|
|
30
|
+
(0, _webcamMicrophoneUtils.setupScreensharePermission)(setScreensharePermission, screenshareReference);
|
|
31
|
+
}
|
|
32
|
+
}, [triggerRequestPermission]);
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement("video", {
|
|
34
|
+
ref: screenshareReference,
|
|
35
|
+
className: "captured-video-canvas",
|
|
36
|
+
id: "ss-ref"
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
exports.ScreenshareTracker = ScreenshareTracker;
|
|
@@ -10,7 +10,8 @@ const defaultConfig = {
|
|
|
10
10
|
fullscreenExit: true,
|
|
11
11
|
lookedAway: true,
|
|
12
12
|
webcamSnapshots: true,
|
|
13
|
-
screenshareSnapshots: true
|
|
13
|
+
screenshareSnapshots: true,
|
|
14
|
+
copyPasteProctoring: true
|
|
14
15
|
};
|
|
15
16
|
exports.defaultConfig = defaultConfig;
|
|
16
17
|
const initialValues = {
|
package/dist/index.js
CHANGED
|
@@ -9,5 +9,11 @@ Object.defineProperty(exports, "ProctorApp", {
|
|
|
9
9
|
return _components.ProctorApp;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "ScreenshareTracker", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _components.ScreenshareTracker;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
|
|
13
19
|
var _components = require("./components");
|
|
@@ -151,6 +151,7 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
|
|
|
151
151
|
const track = stream.getTracks()[0];
|
|
152
152
|
|
|
153
153
|
if (track.getSettings().displaySurface === "monitor") {
|
|
154
|
+
setScreensharePermission(true);
|
|
154
155
|
screenshareReference.current.srcObject = stream;
|
|
155
156
|
|
|
156
157
|
screenshareReference.current.onloadedmetadata = e => {
|
|
@@ -159,9 +160,8 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
|
|
|
159
160
|
|
|
160
161
|
track.onended = e => {
|
|
161
162
|
setScreensharePermission(false);
|
|
163
|
+
screenshareReference.current.srcObject = null;
|
|
162
164
|
};
|
|
163
|
-
|
|
164
|
-
setScreensharePermission(true);
|
|
165
165
|
} else {
|
|
166
166
|
screenshareReference.current = null;
|
|
167
167
|
setScreensharePermission(false);
|