@newtonschool/react_proctoring_library 0.0.119 → 0.0.121

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.
@@ -42,7 +42,8 @@ const Permission = _ref => {
42
42
  showFullscreenText: !permissions.fullscreen && proctorParams.fullscreenExit,
43
43
  showAudioPermissionText: !permissions.audio && (0, _breachUtils.isAudioRequired)(proctorParams),
44
44
  showVideoPermissionText: !permissions.video && (0, _breachUtils.isWebcamRequired)(proctorParams),
45
- showScreensharePermission: !permissions.screenshare && proctorParams.screenshareSnapshots
45
+ showScreensharePermission: !permissions.screenshare && proctorParams.screenshareSnapshots,
46
+ showSingleScreenPermission: !permissions.singleScreen && proctorParams.singleScreen
46
47
  })
47
48
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Modal.Footer, {
48
49
  children: [!permissions.screenshare && proctorParams.screenshareSnapshots && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
@@ -18,7 +18,8 @@ const PermissionBody = _ref => {
18
18
  showFullscreenText,
19
19
  showAudioPermissionText,
20
20
  showVideoPermissionText,
21
- showScreensharePermission
21
+ showScreensharePermission,
22
+ showSingleScreenPermission
22
23
  } = _ref;
23
24
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
24
25
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -68,6 +69,11 @@ const PermissionBody = _ref => {
68
69
  className: "pr-2 font-weight-bold",
69
70
  children: "Fullscreen:"
70
71
  }), text.PERMISSION_FULLSCREEN]
72
+ }), showSingleScreenPermission && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
73
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
74
+ className: "pr-2 font-weight-bold",
75
+ children: "Single Screen:"
76
+ }), text.PERMISSION_SINGLE_SCREEN]
71
77
  })]
72
78
  });
73
79
  };
@@ -44,7 +44,8 @@ const ProctorApp = _ref => {
44
44
  getProctorParamValues = () => {},
45
45
  getWebcamSnapshot = () => {},
46
46
  getScreengrab = () => {},
47
- logger = () => {}
47
+ logger = () => {},
48
+ onProctoredViewChange = () => {}
48
49
  } = _ref;
49
50
  const context = (0, _react.useContext)(proctoredContext);
50
51
  const isElectronApp = (0, _react.useContext)(_ElectronContext.ElectronContext);
@@ -73,7 +74,7 @@ const ProctorApp = _ref => {
73
74
  }, []);
74
75
  const CustomPermissionView = customPermissionView;
75
76
  const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
76
- const shouldShowProctoredComponent = (0, _breachUtils.showProctoredComponent)(proctorParams, permissions);
77
+ const shouldShowProctoredComponent = (0, _react.useMemo)(() => (0, _breachUtils.showProctoredComponent)(proctorParams, permissions), [proctorParams, permissions, _breachUtils.showProctoredComponent]);
77
78
  const allPermissionsGrantedCallback = () => {
78
79
  if (!calledAllPermissionHandler.current) {
79
80
  var _window$electron$acti, _window$electron$acti2;
@@ -104,6 +105,9 @@ const ProctorApp = _ref => {
104
105
  allPermissionGrantedOnce.current = true;
105
106
  }
106
107
  }, [allPermissionGrantedOnce, permissions, proctorParams]);
108
+ (0, _react.useEffect)(() => {
109
+ onProctoredViewChange(shouldShowProctoredComponent);
110
+ }, [shouldShowProctoredComponent]);
107
111
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
108
112
  className: "".concat(proctorParams.copyPasteProctoring ? 'disable-copy-paste fullwidth fullheight' : 'fullwidth fullheight'),
109
113
  children: [shouldShowProctoredComponent && children, !shouldShowProctoredComponent && customPermissionView && /*#__PURE__*/(0, _jsxRuntime.jsx)(CustomPermissionView, _objectSpread({
@@ -51,6 +51,7 @@ const ProctoredContextApp = _ref => {
51
51
  openHeimdall: null
52
52
  });
53
53
  const [screensharePermission, setScreensharePermission] = (0, _react.useState)();
54
+ const [singleScreenPermission, setSingleScreenPermission] = (0, _react.useState)(true);
54
55
  const [_, setUpdateId] = (0, _react.useState)(0);
55
56
  const webcamReference = (0, _react.useRef)(null);
56
57
  const screenshareReference = (0, _react.useRef)(null);
@@ -66,11 +67,31 @@ const ProctoredContextApp = _ref => {
66
67
  audio: audioPermisison,
67
68
  fullscreen: isFullscreen,
68
69
  screenshare: screensharePermission,
69
- openHeimdall: openHeimdallAppPermission
70
- }), [videoPermission, audioPermisison, isFullscreen, screensharePermission, openHeimdallAppPermission]);
70
+ openHeimdall: openHeimdallAppPermission,
71
+ singleScreen: singleScreenPermission
72
+ }), [videoPermission, audioPermisison, isFullscreen, screensharePermission, openHeimdallAppPermission, singleScreenPermission]);
71
73
  const forceUpdate = () => {
72
74
  setUpdateId(oldId => oldId + 1);
73
75
  };
76
+ (0, _react.useEffect)(() => {
77
+ const updateSingleScreenPermission = () => {
78
+ if (isElectronApp) {
79
+ setSingleScreenPermission(true);
80
+ }
81
+ if (typeof window === 'undefined' || !window.screen) {
82
+ setSingleScreenPermission(true);
83
+ return;
84
+ }
85
+ if (typeof window.screen.isExtended === 'undefined') {
86
+ setSingleScreenPermission(true);
87
+ return;
88
+ }
89
+ setSingleScreenPermission(!window.screen.isExtended);
90
+ };
91
+ updateSingleScreenPermission();
92
+ const intervalId = setInterval(updateSingleScreenPermission, 10000);
93
+ return () => clearInterval(intervalId);
94
+ }, []);
74
95
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Context.Provider, {
75
96
  value: _objectSpread(_objectSpread({}, customContext), {}, {
76
97
  permissions,
@@ -11,7 +11,8 @@ const defaultConfig = exports.defaultConfig = {
11
11
  screenshareSnapshots: true,
12
12
  openHeimdall: true,
13
13
  copyPasteProctoring: true,
14
- pageFocus: true
14
+ pageFocus: true,
15
+ singleScreen: true
15
16
  };
16
17
  const initialValues = exports.initialValues = {
17
18
  isTabSwitched: false,
@@ -45,7 +46,8 @@ const proctorParamsToPermission = exports.proctorParamsToPermission = {
45
46
  screenshareSnapshots: 'screenshare',
46
47
  audio: 'audio',
47
48
  openHeimdall: 'openHeimdall',
48
- downloadHeimdall: 'downloadHeimdall'
49
+ downloadHeimdall: 'downloadHeimdall',
50
+ singleScreen: 'singleScreen'
49
51
  };
50
52
  const evaluateVideoIntervalInSeconds = exports.evaluateVideoIntervalInSeconds = 5;
51
53
  const gpuTypes = exports.gpuTypes = ['intel', 'apple', 'amd', 'radeon', 'nvidia', 'geforce'];
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.WATCHING_SCREEN = exports.VIDEO_UNSUPPORTED_IN_BROWSER = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_HEADING = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_DESC = exports.REQUEST_PERMISSION = exports.PERMISSION_VIDEO = exports.PERMISSION_TITLE = exports.PERMISSION_SCREENSHARE = exports.PERMISSION_GENERIC = exports.PERMISSION_FULLSCREEN = exports.PERMISSION_AUDIO_VIDEO = exports.PERMISSION_AUDIO = exports.NO_CAMERA_AVAILABLE = exports.NO_AUDIO_DEVICE_AVAILABLE = exports.NOT_WATCHING_SCREEN = exports.MESSAGE = exports.FULLSCREEN_ERROR_MESSAGE = exports.DENY_FULLSCREEN = exports.CAMERA_UNAVAILABLE_INSECURE_CONN = exports.BROWSER_BLOCKED_PERMISSION_RESOLVED_RECHECK = exports.BROWSER_BLOCKED_PERMISSION_NEXT_STEP = exports.BROWSER_BLOCKED_PERMISSION_DIRECTION = exports.BROWSER_BLOCKED_PERMISSION_DIALOG = exports.BROWSER_BLOCKED_PERMISSION = exports.ALLOW_SCREENSHARE = exports.ALLOW_FULLSCREEN = void 0;
6
+ exports.WATCHING_SCREEN = exports.VIDEO_UNSUPPORTED_IN_BROWSER = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_HEADING = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_DESC = exports.REQUEST_PERMISSION = exports.PERMISSION_VIDEO = exports.PERMISSION_TITLE = exports.PERMISSION_SINGLE_SCREEN = exports.PERMISSION_SCREENSHARE = exports.PERMISSION_GENERIC = exports.PERMISSION_FULLSCREEN = exports.PERMISSION_AUDIO_VIDEO = exports.PERMISSION_AUDIO = exports.NO_CAMERA_AVAILABLE = exports.NO_AUDIO_DEVICE_AVAILABLE = exports.NOT_WATCHING_SCREEN = exports.MESSAGE = exports.FULLSCREEN_ERROR_MESSAGE = exports.DENY_FULLSCREEN = exports.CAMERA_UNAVAILABLE_INSECURE_CONN = exports.BROWSER_BLOCKED_PERMISSION_RESOLVED_RECHECK = exports.BROWSER_BLOCKED_PERMISSION_NEXT_STEP = exports.BROWSER_BLOCKED_PERMISSION_DIRECTION = exports.BROWSER_BLOCKED_PERMISSION_DIALOG = exports.BROWSER_BLOCKED_PERMISSION = exports.ALLOW_SCREENSHARE = exports.ALLOW_FULLSCREEN = void 0;
7
7
  const WATCHING_SCREEN = exports.WATCHING_SCREEN = 'You are watching the screen';
8
8
  const NOT_WATCHING_SCREEN = exports.NOT_WATCHING_SCREEN = 'You are not watching the screen';
9
9
  const PERMISSION_TITLE = exports.PERMISSION_TITLE = 'Permissions';
@@ -29,4 +29,5 @@ const PERMISSION_FULLSCREEN = exports.PERMISSION_FULLSCREEN = 'Please allow us t
29
29
  const PERMISSION_AUDIO_VIDEO = exports.PERMISSION_AUDIO_VIDEO = "Your browser or system settings have disallowed Microphone and Camera permissions. Please permit this website to access microphone and camera. Refresh after you've given the permission to access the screen";
30
30
  const PERMISSION_VIDEO = exports.PERMISSION_VIDEO = "Your browser or system settings have disallowed Camera permissions. Please permit this website to access the camera. Refresh after you've given the permission to access the screen";
31
31
  const PERMISSION_AUDIO = exports.PERMISSION_AUDIO = "Your browser or system settings have disallowed Microphone permissions. Please permit this website to access the microphone. Refresh after you've given the permission to access the screen";
32
- const PERMISSION_SCREENSHARE = exports.PERMISSION_SCREENSHARE = 'Please share your entire screen';
32
+ const PERMISSION_SCREENSHARE = exports.PERMISSION_SCREENSHARE = 'Please share your entire screen';
33
+ const PERMISSION_SINGLE_SCREEN = exports.PERMISSION_SINGLE_SCREEN = 'Please use a single screen. Extended displays are not allowed.';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonschool/react_proctoring_library",
3
- "version": "0.0.119",
3
+ "version": "0.0.121",
4
4
  "description": "Used to proctor online tests",
5
5
  "author": "ayushkagrawal,shreyachandra,weastel",
6
6
  "main": "dist/index.js",