@newtonschool/react_proctoring_library 0.0.66 → 0.0.68-staging

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.
Files changed (41) hide show
  1. package/dist/components/breach-parameters/index.js +24 -0
  2. package/dist/components/fullscreen/index.js +38 -0
  3. package/dist/components/index.js +1 -1
  4. package/dist/components/permissions/index.js +31 -20
  5. package/dist/components/permissions/permission-body.js +49 -26
  6. package/dist/components/proctor-app/Loadable.js +3 -2
  7. package/dist/components/proctor-app/index.js +68 -106
  8. package/dist/components/proctor-context-app/Loadable.js +3 -2
  9. package/dist/components/proctor-context-app/index.js +45 -31
  10. package/dist/components/screenshare-activity-tracker/electron.js +107 -0
  11. package/dist/components/screenshare-activity-tracker/index.js +31 -15
  12. package/dist/components/screenshare-activity-tracker/web.js +95 -0
  13. package/dist/components/webcam-activity-tracker/electron.js +131 -0
  14. package/dist/components/webcam-activity-tracker/index.js +32 -49
  15. package/dist/components/webcam-activity-tracker/web.js +128 -0
  16. package/dist/contexts/ElectronContext.js +9 -0
  17. package/dist/hooks/electron/useFullScreenData.js +40 -0
  18. package/dist/hooks/electron/useIsElectron.js +31 -0
  19. package/dist/hooks/electron/useIsPageFocussed.js +25 -0
  20. package/dist/hooks/electron/useKishokMode.js +43 -0
  21. package/dist/hooks/electron/usePageVisibility.js +37 -0
  22. package/dist/hooks/electron/useWakeUpLock.js +33 -0
  23. package/dist/hooks/useBreachData.js +39 -0
  24. package/dist/hooks/useGenericFullScreenData.js +29 -0
  25. package/dist/hooks/useGenericPageFocus.js +17 -0
  26. package/dist/hooks/useGenericPageVisibility.js +17 -0
  27. package/dist/hooks/useGenericWakeUpLock.js +29 -0
  28. package/dist/hooks/useTrackBreachParameters.js +63 -0
  29. package/dist/hooks/{index.js → web/index.js} +1 -1
  30. package/dist/hooks/{useFullScreenData.js → web/useFullScreenData.js} +12 -10
  31. package/dist/hooks/{useIsPageFocussed.js → web/useIsPageFocussed.js} +1 -1
  32. package/dist/hooks/{usePageVisibility.js → web/usePageVisibility.js} +1 -1
  33. package/dist/hooks/{useWakeUpLock.js → web/useWakeUpLock.js} +2 -2
  34. package/dist/index.js +9 -1
  35. package/dist/utils/breachUtils.js +1 -1
  36. package/dist/utils/browserUtils.js +31 -22
  37. package/dist/utils/fullScreen.js +31 -0
  38. package/dist/utils/gpuUtils.js +6 -3
  39. package/dist/utils/loadable.js +11 -3
  40. package/dist/utils/webcamMicrophoneUtils.js +27 -4
  41. package/package.json +3 -1
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BreachParameters;
7
+ var _useTrackBreachParameters = require("../../hooks/useTrackBreachParameters");
8
+ function BreachParameters(_ref) {
9
+ let {
10
+ config,
11
+ getProctorParamValues,
12
+ proctoringIdentifier,
13
+ permissions,
14
+ proctorParams
15
+ } = _ref;
16
+ (0, _useTrackBreachParameters.useTrackBreachParameters)({
17
+ config,
18
+ getProctorParamValues,
19
+ proctoringIdentifier,
20
+ permissions,
21
+ proctorParams
22
+ });
23
+ return null;
24
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = FullScreen;
7
+ require("core-js/modules/es.symbol.description.js");
8
+ var _react = require("react");
9
+ var _useGenericFullScreenData = _interopRequireDefault(require("../../hooks/useGenericFullScreenData"));
10
+ var _ElectronContext = require("../../contexts/ElectronContext");
11
+ var _useKishokMode = _interopRequireDefault(require("../../hooks/electron/useKishokMode"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
17
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ function FullScreen(_ref) {
19
+ let {
20
+ setAskPermissionAction,
21
+ proctoredContext,
22
+ proctorParams
23
+ } = _ref;
24
+ const isElectronApp = (0, _react.useContext)(_ElectronContext.ElectronContext);
25
+ const {
26
+ setFullscreen
27
+ } = (0, _useGenericFullScreenData.default)(isElectronApp);
28
+ (0, _useKishokMode.default)({
29
+ proctoredContext,
30
+ proctorParams
31
+ });
32
+ (0, _react.useEffect)(() => {
33
+ setAskPermissionAction(oldAskPermissionAction => _objectSpread(_objectSpread({}, oldAskPermissionAction), {}, {
34
+ fullscreen: () => setFullscreen(true)
35
+ }));
36
+ }, [setAskPermissionAction, setFullscreen]);
37
+ return null;
38
+ }
@@ -24,4 +24,4 @@ Object.defineProperty(exports, "ProctoredContextApp", {
24
24
  var _permissions = require("./permissions");
25
25
  var _proctorApp = _interopRequireDefault(require("./proctor-app"));
26
26
  var _proctorContextApp = _interopRequireDefault(require("./proctor-context-app"));
27
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -13,9 +13,10 @@ var text = _interopRequireWildcard(require("../../constants/text"));
13
13
  var _permissionBody = require("./permission-body");
14
14
  var _breachUtils = require("../../utils/breachUtils");
15
15
  var _permission = require("../../utils/permission");
16
+ var _jsxRuntime = require("react/jsx-runtime");
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
20
  const Permission = _ref => {
20
21
  let {
21
22
  proctorParams,
@@ -23,28 +24,38 @@ const Permission = _ref => {
23
24
  askPermission
24
25
  } = _ref;
25
26
  const showPermissionModal = !(0, _permission.hasAllPermissions)((0, _breachUtils.getRequiredPermissionsFromProctorParams)(proctorParams), permissions);
26
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal, {
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Modal, {
27
28
  show: showPermissionModal,
28
29
  size: "lg",
29
30
  backdrop: "static",
30
31
  "aria-labelledby": "contained-modal-title-vcenter",
31
- centered: true
32
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Header, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Title, null, text.PERMISSION_TITLE)), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Body, {
33
- className: "font-medium"
34
- }, /*#__PURE__*/_react.default.createElement(_permissionBody.PermissionBody, {
35
- showFullscreenText: !permissions.fullscreen && proctorParams.fullscreenExit,
36
- showAudioPermissionText: !permissions.audio && (0, _breachUtils.isAudioRequired)(proctorParams),
37
- showVideoPermissionText: !permissions.video && (0, _breachUtils.isWebcamRequired)(proctorParams),
38
- showScreensharePermission: !permissions.screenshare && proctorParams.screenshareSnapshots
39
- })), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Footer, null, !permissions.screenshare && proctorParams.screenshareSnapshots && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
40
- onClick: () => {
41
- askPermission(['screenshare']);
42
- }
43
- }, text.ALLOW_SCREENSHARE), !permissions.fullscreen && proctorParams.fullscreenExit && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
44
- variant: "primary",
45
- onClick: () => {
46
- askPermission(['fullscreen']);
47
- }
48
- }, text.ALLOW_FULLSCREEN)));
32
+ centered: true,
33
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Modal.Header, {
34
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Modal.Title, {
35
+ children: text.PERMISSION_TITLE
36
+ })
37
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Modal.Body, {
38
+ className: "font-medium",
39
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_permissionBody.PermissionBody, {
40
+ showFullscreenText: !permissions.fullscreen && proctorParams.fullscreenExit,
41
+ showAudioPermissionText: !permissions.audio && (0, _breachUtils.isAudioRequired)(proctorParams),
42
+ showVideoPermissionText: !permissions.video && (0, _breachUtils.isWebcamRequired)(proctorParams),
43
+ showScreensharePermission: !permissions.screenshare && proctorParams.screenshareSnapshots
44
+ })
45
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Modal.Footer, {
46
+ children: [!permissions.screenshare && proctorParams.screenshareSnapshots && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
47
+ onClick: () => {
48
+ askPermission(['screenshare']);
49
+ },
50
+ children: text.ALLOW_SCREENSHARE
51
+ }), !permissions.fullscreen && proctorParams.fullscreenExit && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
52
+ variant: "primary",
53
+ onClick: () => {
54
+ askPermission(['fullscreen']);
55
+ },
56
+ children: text.ALLOW_FULLSCREEN
57
+ })]
58
+ })]
59
+ });
49
60
  };
50
61
  exports.Permission = Permission;
@@ -11,9 +11,10 @@ var _urlVideoPermissionHighlight = _interopRequireDefault(require("../../assets/
11
11
  require("./index.scss");
12
12
  var text = _interopRequireWildcard(require("../../constants/text"));
13
13
  var _browserUtils = require("../../utils/browserUtils");
14
+ var _jsxRuntime = require("react/jsx-runtime");
14
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
18
  const PermissionBody = _ref => {
18
19
  let {
19
20
  showFullscreenText,
@@ -21,30 +22,52 @@ const PermissionBody = _ref => {
21
22
  showVideoPermissionText,
22
23
  showScreensharePermission
23
24
  } = _ref;
24
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
25
- className: "mb-2"
26
- }, text.PERMISSION_GENERIC), showScreensharePermission && /*#__PURE__*/_react.default.createElement("div", {
27
- className: "mb-2"
28
- }, !(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", {
29
- className: "pr-2 font-weight-bold"
30
- }, "Screenshare:"), text.PERMISSION_SCREENSHARE), showAudioPermissionText && showVideoPermissionText ? /*#__PURE__*/_react.default.createElement("div", {
31
- className: "mb-2"
32
- }, /*#__PURE__*/_react.default.createElement("span", {
33
- className: "pr-2 font-weight-bold"
34
- }, "Camera/Microphone:"), text.PERMISSION_AUDIO_VIDEO) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showVideoPermissionText && /*#__PURE__*/_react.default.createElement("div", {
35
- className: "mb-2"
36
- }, /*#__PURE__*/_react.default.createElement("span", {
37
- className: "pr-2 font-weight-bold"
38
- }, "Camera:"), text.PERMISSION_VIDEO), showAudioPermissionText && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", {
39
- className: "pr-2 font-weight-bold"
40
- }, "Microphone:"), text.PERMISSION_AUDIO)), (showAudioPermissionText || showVideoPermissionText) && /*#__PURE__*/_react.default.createElement("div", {
41
- className: "d-flex justify-content-center"
42
- }, /*#__PURE__*/_react.default.createElement("img", {
43
- className: "video-permission-img",
44
- alt: "url_video_permission_highlight",
45
- src: _urlVideoPermissionHighlight.default
46
- })), showFullscreenText && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", {
47
- className: "pr-2 font-weight-bold"
48
- }, "Fullscreen:"), text.PERMISSION_FULLSCREEN));
25
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
26
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
27
+ className: "mb-2",
28
+ children: text.PERMISSION_GENERIC
29
+ }), showScreensharePermission && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
30
+ className: "mb-2",
31
+ children: [!(0, _browserUtils.isChrome)() && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
32
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("strong", {
33
+ children: "Please switch to chrome"
34
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("br", {})]
35
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
36
+ className: "pr-2 font-weight-bold",
37
+ children: "Screenshare:"
38
+ }), text.PERMISSION_SCREENSHARE]
39
+ }), showAudioPermissionText && showVideoPermissionText ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
40
+ className: "mb-2",
41
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
42
+ className: "pr-2 font-weight-bold",
43
+ children: "Camera/Microphone:"
44
+ }), text.PERMISSION_AUDIO_VIDEO]
45
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
46
+ children: [showVideoPermissionText && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
47
+ className: "mb-2",
48
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
49
+ className: "pr-2 font-weight-bold",
50
+ children: "Camera:"
51
+ }), text.PERMISSION_VIDEO]
52
+ }), showAudioPermissionText && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
53
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
54
+ className: "pr-2 font-weight-bold",
55
+ children: "Microphone:"
56
+ }), text.PERMISSION_AUDIO]
57
+ })]
58
+ }), (showAudioPermissionText || showVideoPermissionText) && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
59
+ className: "d-flex justify-content-center",
60
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
61
+ className: "video-permission-img",
62
+ alt: "url_video_permission_highlight",
63
+ src: _urlVideoPermissionHighlight.default
64
+ })
65
+ }), showFullscreenText && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
66
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
67
+ className: "pr-2 font-weight-bold",
68
+ children: "Fullscreen:"
69
+ }), text.PERMISSION_FULLSCREEN]
70
+ })]
71
+ });
49
72
  };
50
73
  exports.PermissionBody = PermissionBody;
@@ -9,11 +9,12 @@ require("core-js/modules/es.weak-map.js");
9
9
  require("core-js/modules/web.dom-collections.iterator.js");
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
  var _loadable = _interopRequireDefault(require("../../utils/loadable"));
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
15
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /**
15
16
  * Asynchronously loads the component for FeaturePage
16
17
  */
17
18
  var _default = exports.default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
18
- fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
19
+ fallback: /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {})
19
20
  });
@@ -1,38 +1,33 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/es.object.assign.js");
3
+ require("core-js/modules/es.symbol.description.js");
4
4
  require("core-js/modules/es.weak-map.js");
5
- require("core-js/modules/web.dom-collections.iterator.js");
6
5
  Object.defineProperty(exports, "__esModule", {
7
6
  value: true
8
7
  });
9
8
  exports.default = exports.ProctorApp = void 0;
10
- require("core-js/modules/es.promise.js");
11
- require("core-js/modules/es.symbol.description.js");
9
+ require("core-js/modules/web.dom-collections.iterator.js");
12
10
  var _react = _interopRequireWildcard(require("react"));
13
- var _useWakeUpLock = require("../../hooks/useWakeUpLock");
14
11
  require("./index.scss");
15
- var _utils = require("../../utils");
16
- var _hooks = require("../../hooks");
17
12
  var _permissions = require("../permissions");
18
13
  var _breachUtils = require("../../utils/breachUtils");
19
- var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
20
14
  var _defaults = require("../../constants/defaults");
21
- var _webcamActivityTracker = _interopRequireDefault(require("../webcam-activity-tracker"));
22
15
  var _browserUtils = require("../../utils/browserUtils");
23
- var _screenshareActivityTracker = require("../screenshare-activity-tracker");
24
- var _dom = require("../../constants/dom");
25
- var _useIsPageFocussed = _interopRequireDefault(require("../../hooks/useIsPageFocussed"));
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ var _screenshareActivityTracker = _interopRequireDefault(require("../screenshare-activity-tracker"));
17
+ var _webcamActivityTracker = _interopRequireDefault(require("../webcam-activity-tracker"));
18
+ var _fullscreen = _interopRequireDefault(require("../fullscreen"));
19
+ var _ElectronContext = require("../../contexts/ElectronContext");
20
+ var _useGenericWakeUpLock = _interopRequireDefault(require("../../hooks/useGenericWakeUpLock"));
21
+ var _breachParameters = _interopRequireDefault(require("../breach-parameters"));
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
28
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
29
- 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); }
30
26
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31
27
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
32
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
28
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
33
29
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
34
30
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
35
- const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
36
31
  const ProctorApp = _ref => {
37
32
  let {
38
33
  proctoringIdentifier,
@@ -48,109 +43,76 @@ const ProctorApp = _ref => {
48
43
  } = _ref;
49
44
  const context = (0, _react.useContext)(proctoredContext);
50
45
  const {
51
- actions,
52
46
  permissions,
53
47
  references,
54
- permissionSetter,
55
- screenshareStream
48
+ permissionErrors
56
49
  } = context;
57
50
  const {
58
51
  acquireWakeUpLock,
59
52
  releaseWakeUpLock
60
- } = (0, _useWakeUpLock.useWakeUpLock)();
53
+ } = (0, _useGenericWakeUpLock.default)();
54
+ const [askPermissionAction, setAskPermissionAction] = (0, _react.useState)({
55
+ screenshare: () => {},
56
+ fullscreen: () => {},
57
+ video: () => {}
58
+ });
61
59
  (0, _react.useEffect)(() => {
62
60
  acquireWakeUpLock();
63
61
  return releaseWakeUpLock;
64
62
  }, []);
63
+ const isElectronApp = (0, _react.useContext)(_ElectronContext.ElectronContext);
65
64
  const CustomPermissionView = customPermissionView;
66
65
  const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
67
- const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
68
- const {
69
- recurring = false,
70
- recurringFetchInterval = 0
71
- } = config;
72
- const recurringFetchIntervalRef = (0, _react.useRef)(null);
73
- const sendScreengrab = (0, _react.useCallback)(async function () {
74
- let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
75
- let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
76
- if (proctorParams.screenshareSnapshots && permissions.screenshare) {
77
- const screenshot = await (0, _webcamMicrophoneUtils.captureScreenshot)("#".concat(_dom.SCREENSHARE_REFERENCE_ID));
78
- getScreengrab(proctoringIdentifier, screenshot, isBreach, breachedParam);
79
- }
80
- }, [getScreengrab, proctoringIdentifier, proctorParams.screenshareSnapshots, permissions.screenshare]);
81
- const sendWebcamSnapshot = (0, _react.useCallback)(async function () {
82
- let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
83
- let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
84
- if (proctorParams.webcamSnapshots && permissions.video) {
85
- const webcamSnapshot = await (0, _webcamMicrophoneUtils.captureScreenshot)("#".concat(_dom.WEBCAM_REFERENCE_ID));
86
- getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
87
- }
88
- }, [proctoringIdentifier, getWebcamSnapshot, proctorParams.webcamSnapshots, permissions.video]);
89
- const sendProctoredParamValues = (0, _react.useCallback)(function () {
90
- let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
91
- let breachParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
92
- getProctorParamValues(proctoringIdentifier, statistics.current, isBreach, breachParam);
93
- }, [proctoringIdentifier, getProctorParamValues]);
94
- const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch);
95
- const isPageFocussed = (0, _useIsPageFocussed.default)(proctorParams.pageFocus);
96
- (0, _react.useEffect)(() => {
97
- let timeoutId = null;
98
- if (recurring) {
99
- const randomStartDelay = 1000 * (Math.floor(Math.random() * 10) + 1);
100
- timeoutId = setTimeout(() => {
101
- sendWebcamSnapshot();
102
- sendScreengrab();
103
- recurringFetchIntervalRef.current = setInterval(() => {
104
- sendProctoredParamValues();
105
- sendWebcamSnapshot();
106
- sendScreengrab();
107
- }, recurringFetchInterval);
108
- }, randomStartDelay);
109
- }
110
- return () => {
111
- clearInterval(recurringFetchIntervalRef.current);
112
- clearTimeout(timeoutId);
113
- };
114
- }, [recurring, recurringFetchInterval, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab]);
115
- (0, _react.useEffect)(() => {
116
- const currentStats = {
117
- isTabSwitched,
118
- isFullScreen: permissions.fullscreen,
119
- isWebcamDataNotReliable: !isWebcamProcessingReliable,
120
- isPageFocussed
121
- };
122
- const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
123
- (0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
124
- if (breachData) {
125
- sendProctoredParamValues(true, breachData.breachedParam);
126
- sendWebcamSnapshot(true, breachData.breachedParam);
127
- sendScreengrab(true, breachData.breachedParam);
128
- }
129
- }, [isTabSwitched, isPageFocussed, permissions.fullscreen, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
130
66
  const shouldShowProctoredComponent = (0, _breachUtils.showProctoredComponent)(proctorParams, permissions);
131
- return /*#__PURE__*/_react.default.createElement("div", {
132
- className: "".concat(proctorParams.copyPasteProctoring ? 'disable-copy-paste fullwidth fullheight' : 'fullwidth fullheight')
133
- }, shouldShowProctoredComponent && children, !shouldShowProctoredComponent && customPermissionView && /*#__PURE__*/_react.default.createElement(CustomPermissionView, _extends({
134
- permissions: permissions,
135
- proctorParams: proctorParams,
136
- references: references,
137
- actions: actions,
138
- browserDetails: (0, _browserUtils.getBrowserDetails)()
139
- }, permissionPassedProps)), !shouldShowProctoredComponent && !customPermissionView && /*#__PURE__*/_react.default.createElement(_permissions.Permission, {
140
- proctorParams: proctorParams,
141
- permissions: permissions,
142
- askPermission: actions.askPermission
143
- }), proctorParams.webcamSnapshots && /*#__PURE__*/_react.default.createElement(_webcamActivityTracker.default, {
144
- proctorParams: proctorParams,
145
- setAudioPermission: permissionSetter.audio,
146
- setVideoPermission: permissionSetter.video,
147
- webcamReference: references.webcamReference,
148
- canvasReference: references.canvasReference,
149
- logger: logger
150
- }), proctorParams.screenshareSnapshots && /*#__PURE__*/_react.default.createElement(_screenshareActivityTracker.ScreenshareActivityTracker, {
151
- screenshareStream: screenshareStream,
152
- ref: references.screenshareReference
153
- }));
67
+ const askPermission = (0, _react.useCallback)(requiredPermissions => {
68
+ requiredPermissions.forEach(element => {
69
+ if (!permissions[element] && askPermissionAction[element]) {
70
+ askPermissionAction[element]();
71
+ }
72
+ });
73
+ }, [permissions, askPermissionAction]);
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
75
+ className: "".concat(proctorParams.copyPasteProctoring ? 'disable-copy-paste fullwidth fullheight' : 'fullwidth fullheight'),
76
+ children: [shouldShowProctoredComponent && children, !shouldShowProctoredComponent && customPermissionView && /*#__PURE__*/(0, _jsxRuntime.jsx)(CustomPermissionView, _objectSpread({
77
+ permissions: permissions,
78
+ proctorParams: proctorParams,
79
+ references: references,
80
+ actions: {
81
+ askPermission
82
+ },
83
+ browserDetails: (0, _browserUtils.getBrowserDetails)(),
84
+ permissionErrors: permissionErrors
85
+ }, permissionPassedProps)), !shouldShowProctoredComponent && !customPermissionView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_permissions.Permission, {
86
+ permissions: permissions,
87
+ proctorParams: proctorParams,
88
+ askPermission: askPermission
89
+ }), proctorParams.webcamSnapshots && /*#__PURE__*/(0, _jsxRuntime.jsx)(_webcamActivityTracker.default, {
90
+ logger: logger,
91
+ config: config,
92
+ proctorParams: proctorParams,
93
+ proctoredContext: proctoredContext,
94
+ getWebcamSnapshot: getWebcamSnapshot,
95
+ proctoringIdentifier: proctoringIdentifier,
96
+ setAskPermissionAction: setAskPermissionAction
97
+ }), proctorParams.screenshareSnapshots && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screenshareActivityTracker.default, {
98
+ config: config,
99
+ getScreengrab: getScreengrab,
100
+ proctorParams: proctorParams,
101
+ proctoredContext: proctoredContext,
102
+ proctoringIdentifier: proctoringIdentifier,
103
+ setAskPermissionAction: setAskPermissionAction
104
+ }), proctorParams.fullscreenExit && /*#__PURE__*/(0, _jsxRuntime.jsx)(_fullscreen.default, {
105
+ setAskPermissionAction: setAskPermissionAction,
106
+ proctorParams: proctorParams,
107
+ proctoredContext: proctoredContext
108
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_breachParameters.default, {
109
+ config: config,
110
+ getProctorParamValues: getProctorParamValues,
111
+ permissions: permissions,
112
+ proctorParams: proctorParams,
113
+ proctoringIdentifier: proctoringIdentifier
114
+ })]
115
+ });
154
116
  };
155
117
  exports.ProctorApp = ProctorApp;
156
118
  var _default = exports.default = ProctorApp;
@@ -9,11 +9,12 @@ require("core-js/modules/es.weak-map.js");
9
9
  require("core-js/modules/web.dom-collections.iterator.js");
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
  var _loadable = _interopRequireDefault(require("../../utils/loadable"));
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
15
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /**
15
16
  * Asynchronously loads the component for FeaturePage
16
17
  */
17
18
  var _default = exports.default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
18
- fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
19
+ fallback: /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {})
19
20
  });
@@ -8,14 +8,17 @@ exports.default = void 0;
8
8
  require("core-js/modules/web.dom-collections.iterator.js");
9
9
  require("core-js/modules/es.symbol.description.js");
10
10
  var _react = _interopRequireWildcard(require("react"));
11
- var _hooks = require("../../hooks");
12
- var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
13
11
  var _defaults = require("../../constants/defaults");
12
+ var _useIsElectron = _interopRequireDefault(require("../../hooks/electron/useIsElectron"));
13
+ var _ElectronContext = require("../../contexts/ElectronContext");
14
+ var _useGenericFullScreenData = _interopRequireDefault(require("../../hooks/useGenericFullScreenData"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
20
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
19
22
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
20
23
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
24
  const ProctoredContextApp = _ref => {
@@ -28,17 +31,25 @@ const ProctoredContextApp = _ref => {
28
31
  customContext = {}
29
32
  } = _ref;
30
33
  const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
31
- const {
32
- isFullscreen,
33
- setFullscreen
34
- } = (0, _hooks.useFullscreenData)(proctorParams.fullscreenExit);
34
+ const [, isElectronApp] = (0, _useIsElectron.default)();
35
+ const [webCamDeviceId, setWebCamDeviceId] = (0, _react.useState)();
36
+ const [screenShareDeviceId, setScreenShareDeviceId] = (0, _react.useState)();
35
37
  const [audioPermisison, setAudioPermission] = (0, _react.useState)();
36
38
  const [videoPermission, setVideoPermission] = (0, _react.useState)();
39
+ const [permissionErrors, setPermissionErrors] = (0, _react.useState)({
40
+ audio: null,
41
+ video: null,
42
+ fullscreen: null,
43
+ screenshare: null
44
+ });
37
45
  const [screensharePermission, setScreensharePermission] = (0, _react.useState)();
38
46
  const webcamReference = (0, _react.useRef)(null);
39
- const canvasReference = (0, _react.useRef)(null);
40
47
  const screenshareReference = (0, _react.useRef)(null);
41
48
  const [screenshareStream, setScreenshareStream] = (0, _react.useState)(null);
49
+ const data = (0, _useGenericFullScreenData.default)(isElectronApp);
50
+ const {
51
+ isFullscreen
52
+ } = data;
42
53
  const Context = contextProvider;
43
54
  const permissions = (0, _react.useMemo)(() => ({
44
55
  video: videoPermission,
@@ -46,25 +57,17 @@ const ProctoredContextApp = _ref => {
46
57
  fullscreen: isFullscreen,
47
58
  screenshare: screensharePermission
48
59
  }), [videoPermission, audioPermisison, isFullscreen, screensharePermission]);
49
- const askPermissionAction = (0, _react.useMemo)(() => ({
50
- screenshare: () => {
51
- (0, _webcamMicrophoneUtils.setupScreensharePermission)(setScreensharePermission, screenshareReference, setScreenshareStream);
52
- },
53
- fullscreen: () => {
54
- setFullscreen();
55
- },
56
- video: () => {
57
- window.location.reload();
60
+ const endTest = () => {
61
+ if (isElectronApp) {
62
+ window.electron.actions.stopProctoring();
58
63
  }
59
- }), [screenshareReference, setFullscreen]);
60
- const askPermission = (0, _react.useCallback)(requiredPermissions => {
61
- requiredPermissions.forEach(element => {
62
- if (!permissions[element] && askPermissionAction[element]) {
63
- askPermissionAction[element]();
64
- }
65
- });
66
- }, [permissions, askPermissionAction]);
67
- return /*#__PURE__*/_react.default.createElement(Context.Provider, {
64
+ };
65
+
66
+ // useEffect(()=>{
67
+ // endTest
68
+ // })
69
+
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Context.Provider, {
68
71
  value: _objectSpread(_objectSpread({}, customContext), {}, {
69
72
  permissions,
70
73
  permissionSetter: {
@@ -72,17 +75,28 @@ const ProctoredContextApp = _ref => {
72
75
  video: setVideoPermission,
73
76
  screenshare: setScreensharePermission
74
77
  },
75
- proctorParams,
76
- actions: {
77
- askPermission
78
+ streamSetter: {
79
+ screenshare: setScreenshareStream
78
80
  },
81
+ device: {
82
+ webCamDeviceId,
83
+ screenShareDeviceId,
84
+ setWebCamDeviceId,
85
+ setScreenShareDeviceId
86
+ },
87
+ permissionErrors,
88
+ setPermissionErrors,
89
+ proctorParams,
79
90
  references: {
80
91
  webcamReference,
81
- canvasReference,
82
92
  screenshareReference
83
93
  },
84
94
  screenshareStream
95
+ }),
96
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ElectronContext.ElectronContextProvider, {
97
+ value: isElectronApp,
98
+ children: children
85
99
  })
86
- }, children);
100
+ });
87
101
  };
88
102
  var _default = exports.default = ProctoredContextApp;