@newtonschool/react_proctoring_library 0.0.37 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,32 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/web.dom-collections.iterator.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _react = _interopRequireWildcard(require("react"));
11
-
12
9
  var _reactWebcam = _interopRequireDefault(require("react-webcam"));
13
-
14
10
  var _utils = require("../../utils");
15
-
16
11
  var _breachUtils = require("../../utils/breachUtils");
17
-
18
12
  var _browserUtils = require("../../utils/browserUtils");
19
-
20
13
  var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
21
-
22
14
  require("./index.scss");
23
-
24
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
-
28
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
-
30
18
  const ActivityTracker = _ref => {
31
19
  let {
32
20
  proctorParams,
@@ -40,12 +28,10 @@ const ActivityTracker = _ref => {
40
28
  (0, _react.useEffect)(() => {
41
29
  if (screenshareReference.current) {
42
30
  screenshareVideoReference.current.srcObject = screenshareReference.current;
43
-
44
31
  screenshareVideoReference.current.onloadedmetadata = e => {
45
32
  screenshareVideoReference.current.play();
46
33
  };
47
34
  }
48
-
49
35
  return () => {
50
36
  screenshareVideoReference.current.srcObject = null;
51
37
  };
@@ -83,7 +69,6 @@ const ActivityTracker = _ref => {
83
69
  } = (0, _utils.getAudioVideoPermission)(stream);
84
70
  setAudioPermission(audio);
85
71
  setVideoPermission(video);
86
-
87
72
  stream.onaddtrack = p => {
88
73
  const {
89
74
  audio,
@@ -92,7 +77,6 @@ const ActivityTracker = _ref => {
92
77
  setAudioPermission(audio);
93
78
  setVideoPermission(video);
94
79
  };
95
-
96
80
  stream.onremovetrack = p => {
97
81
  const {
98
82
  audio,
@@ -101,7 +85,6 @@ const ActivityTracker = _ref => {
101
85
  setAudioPermission(audio);
102
86
  setVideoPermission(video);
103
87
  };
104
-
105
88
  stream.onactive = p => {
106
89
  const {
107
90
  audio,
@@ -110,24 +93,20 @@ const ActivityTracker = _ref => {
110
93
  setAudioPermission(audio);
111
94
  setVideoPermission(video);
112
95
  };
113
-
114
96
  stream.oninactive = e => {
115
97
  setAudioPermission(false);
116
98
  setVideoPermission(false);
117
99
  };
118
-
119
100
  const audioTracks = stream.getAudioTracks().filter(track => track.enabled && track.label);
120
101
  audioTracks.forEach(track => {
121
102
  track.onended = e => {
122
103
  const audio = (0, _utils.getAudioPermission)(stream);
123
104
  setAudioPermission(audio, e.currentTarget.id);
124
105
  };
125
-
126
106
  track.onmute = e => {
127
107
  const audio = (0, _utils.getAudioPermission)(stream);
128
108
  setAudioPermission(audio, e.currentTarget.id);
129
109
  };
130
-
131
110
  track.onunmute = e => {
132
111
  const audio = (0, _utils.getAudioPermission)(stream);
133
112
  setAudioPermission(audio);
@@ -159,6 +138,5 @@ const ActivityTracker = _ref => {
159
138
  id: "ss-ref"
160
139
  }));
161
140
  };
162
-
163
141
  var _default = ActivityTracker;
164
142
  exports.default = _default;
@@ -27,13 +27,8 @@ Object.defineProperty(exports, "ProctoredContextApp", {
27
27
  return _Loadable2.default;
28
28
  }
29
29
  });
30
-
31
30
  var _activityTracker = _interopRequireDefault(require("./activity-tracker"));
32
-
33
31
  var _permissions = require("./permissions");
34
-
35
32
  var _Loadable = _interopRequireDefault(require("./proctor-app/Loadable"));
36
-
37
33
  var _Loadable2 = _interopRequireDefault(require("./proctor-context-app/Loadable"));
38
-
39
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,32 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/web.dom-collections.iterator.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.Permission = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _reactBootstrap = require("react-bootstrap");
13
-
14
10
  var _askPermission = _interopRequireDefault(require("../../assets/videos/ask-permission.mp4"));
15
-
16
11
  require("./index.scss");
17
-
18
12
  var text = _interopRequireWildcard(require("../../constants/text"));
19
-
20
13
  var _permissionBody = require("./permission-body");
21
-
22
14
  var _breachUtils = require("../../utils/breachUtils");
23
-
24
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
-
28
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
18
  const Permission = _ref => {
31
19
  let {
32
20
  proctorParams,
@@ -73,5 +61,4 @@ const Permission = _ref => {
73
61
  }
74
62
  }, text.ALLOW_FULLSCREEN)));
75
63
  };
76
-
77
64
  exports.Permission = Permission;
@@ -1,28 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/web.dom-collections.iterator.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.PermissionBody = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _urlVideoPermissionHighlight = _interopRequireDefault(require("../../assets/images/url-video-permission-highlight.png"));
13
-
14
10
  require("./index.scss");
15
-
16
11
  var text = _interopRequireWildcard(require("../../constants/text"));
17
-
18
12
  var _browserUtils = require("../../utils/browserUtils");
19
-
20
13
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
-
22
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
-
24
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
16
  const PermissionBody = _ref => {
27
17
  let {
28
18
  showFullscreenText,
@@ -56,5 +46,4 @@ const PermissionBody = _ref => {
56
46
  className: "pr-2 font-weight-bold"
57
47
  }, "Fullscreen:"), text.PERMISSION_FULLSCREEN));
58
48
  };
59
-
60
49
  exports.PermissionBody = PermissionBody;
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("core-js/modules/es.promise.js");
9
-
10
8
  require("core-js/modules/web.dom-collections.iterator.js");
11
-
12
9
  var _react = _interopRequireDefault(require("react"));
13
-
14
10
  var _loadable = _interopRequireDefault(require("../../utils/loadable"));
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
14
  var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
23
15
  fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
24
16
  });
25
-
26
17
  exports.default = _default;
@@ -1,54 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.object.assign.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = exports.ProctorApp = void 0;
9
-
10
8
  require("core-js/modules/web.dom-collections.iterator.js");
11
-
12
9
  require("core-js/modules/es.promise.js");
13
-
14
10
  var _react = _interopRequireWildcard(require("react"));
15
-
16
11
  require("./index.scss");
17
-
18
12
  var _utils = require("../../utils");
19
-
20
13
  var _hooks = require("../../hooks");
21
-
22
14
  var _permissions = require("../permissions");
23
-
24
15
  var _useWebcamData = _interopRequireDefault(require("../../hooks/useWebcamData"));
25
-
26
16
  var _breachUtils = require("../../utils/breachUtils");
27
-
28
17
  var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
29
-
30
18
  var _defaults = require("../../constants/defaults");
31
-
32
19
  var _activityTracker = _interopRequireDefault(require("../activity-tracker"));
33
-
34
20
  var _browserUtils = require("../../utils/browserUtils");
35
-
36
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
-
38
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
-
40
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
-
42
24
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
43
-
44
25
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
-
46
26
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
47
-
48
27
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
49
-
50
28
  const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
51
-
52
29
  const ProctorApp = _ref => {
53
30
  let {
54
31
  proctoringIdentifier,
@@ -93,7 +70,6 @@ const ProctorApp = _ref => {
93
70
  const sendScreengrab = (0, _react.useCallback)(async function () {
94
71
  let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
95
72
  let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
96
-
97
73
  if (proctorParams.screenshareSnapshots && permissions.screenshare) {
98
74
  const screenshot = await (0, _webcamMicrophoneUtils.captureScreenshot)();
99
75
  getScreengrab(proctoringIdentifier, screenshot, isBreach, breachedParam);
@@ -102,10 +78,8 @@ const ProctorApp = _ref => {
102
78
  const sendWebcamSnapshot = (0, _react.useCallback)(function () {
103
79
  let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
104
80
  let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
105
-
106
81
  if (proctorParams.webcamSnapshots && permissions.video) {
107
82
  const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(references.webcamReference);
108
-
109
83
  if (references.webcamReference) {
110
84
  getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
111
85
  }
@@ -126,7 +100,6 @@ const ProctorApp = _ref => {
126
100
  sendScreengrab();
127
101
  }, recurringFetchInterval);
128
102
  }
129
-
130
103
  return () => {
131
104
  clearInterval(recurringFetchIntervalRef.current);
132
105
  };
@@ -141,7 +114,6 @@ const ProctorApp = _ref => {
141
114
  };
142
115
  const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
143
116
  (0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
144
-
145
117
  if (breachData) {
146
118
  sendProctoredParamValues(true, breachData.breachedParam);
147
119
  sendWebcamSnapshot(true, breachData.breachedParam);
@@ -175,7 +147,6 @@ const ProctorApp = _ref => {
175
147
  screenshareReference: references.screenshareReference
176
148
  }));
177
149
  };
178
-
179
150
  exports.ProctorApp = ProctorApp;
180
151
  var _default = ProctorApp;
181
152
  exports.default = _default;
@@ -4,23 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("core-js/modules/es.promise.js");
9
-
10
8
  require("core-js/modules/web.dom-collections.iterator.js");
11
-
12
9
  var _react = _interopRequireDefault(require("react"));
13
-
14
10
  var _loadable = _interopRequireDefault(require("../../utils/loadable"));
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
14
  var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
23
15
  fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
24
16
  });
25
-
26
17
  exports.default = _default;
@@ -4,34 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("core-js/modules/web.dom-collections.iterator.js");
9
-
10
8
  var _react = _interopRequireWildcard(require("react"));
11
-
12
9
  var _hooks = require("../../hooks");
13
-
14
10
  var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
15
-
16
11
  var _defaults = require("../../constants/defaults");
17
-
18
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
14
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
-
24
15
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
-
26
16
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
-
28
17
  const ProctoredContextApp = _ref => {
29
18
  let {
30
19
  contextProvider,
31
20
  config = {
32
21
  proctorParams: _defaults.defaultConfig
33
22
  },
34
- children
23
+ children,
24
+ customContext = {}
35
25
  } = _ref;
36
26
  const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
37
27
  const {
@@ -77,7 +67,7 @@ const ProctoredContextApp = _ref => {
77
67
  return hasPermission;
78
68
  }, [getPermissionObj]);
79
69
  return /*#__PURE__*/_react.default.createElement(Context.Provider, {
80
- value: {
70
+ value: _objectSpread(_objectSpread({}, customContext), {}, {
81
71
  permissions: getPermissionObj,
82
72
  permissionSetter: {
83
73
  audio: setAudioPermission,
@@ -100,9 +90,8 @@ const ProctoredContextApp = _ref => {
100
90
  canvasReference: canvasReference,
101
91
  screenshareReference: screenshareReference
102
92
  }
103
- }
93
+ })
104
94
  }, children);
105
95
  };
106
-
107
96
  var _default = ProctoredContextApp;
108
97
  exports.default = _default;
@@ -15,9 +15,6 @@ Object.defineProperty(exports, "usePageVisibility", {
15
15
  return _usePageVisibility.default;
16
16
  }
17
17
  });
18
-
19
18
  var _useFullScreenData = _interopRequireDefault(require("./useFullScreenData"));
20
-
21
19
  var _usePageVisibility = _interopRequireDefault(require("./usePageVisibility"));
22
-
23
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -4,36 +4,27 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useFullscreenData;
7
-
8
7
  require("core-js/modules/web.dom-collections.iterator.js");
9
-
10
8
  var _react = require("react");
11
-
12
9
  var _utils = require("../utils");
13
-
14
10
  const browserFullscreenElementProp = (0, _utils.getBrowserFullscreenElementProp)();
15
-
16
11
  function useFullscreenData(isProctorParam) {
17
12
  const fullScreenElement = (0, _react.useRef)(document.documentElement);
18
13
  const [isFullscreen, setIsFullscreen] = (0, _react.useState)(document[browserFullscreenElementProp] != null);
19
-
20
14
  const setFullscreen = () => {
21
15
  if (!fullScreenElement || !fullScreenElement.current) {
22
16
  return;
23
17
  }
24
-
25
18
  fullScreenElement.current.requestFullscreen().then(() => {
26
19
  setIsFullscreen(document[browserFullscreenElementProp] != null);
27
20
  }).catch(() => {
28
21
  setIsFullscreen(false);
29
22
  });
30
23
  };
31
-
32
24
  (0, _react.useEffect)(() => {
33
25
  if (isProctorParam) {
34
26
  document.onfullscreenchange = () => setIsFullscreen(document[browserFullscreenElementProp] != null);
35
27
  }
36
-
37
28
  return () => document.onfullscreenchange = undefined;
38
29
  }, [isProctorParam]);
39
30
  return {
@@ -4,22 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = usePageVisibility;
7
-
8
7
  require("core-js/modules/web.dom-collections.iterator.js");
9
-
10
8
  var _react = require("react");
11
-
12
9
  var _utils = require("../utils");
13
-
14
10
  const visibilityChangeEvent = (0, _utils.getVisibilityChangeEventName)();
15
-
16
11
  function usePageVisibility(isProctorParam) {
17
12
  const [isVisible, setIsVisible] = (0, _react.useState)((0, _utils.getIsDocumentVisible)());
18
-
19
13
  const updateVisibility = () => {
20
14
  setIsVisible((0, _utils.getIsDocumentVisible)());
21
15
  };
22
-
23
16
  (0, _react.useEffect)(() => {
24
17
  updateVisibility();
25
18
  document.addEventListener(visibilityChangeEvent, updateVisibility, false);
@@ -4,25 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useWebcamData;
7
-
8
7
  require("core-js/modules/es.promise.js");
9
-
10
8
  require("core-js/modules/web.dom-collections.iterator.js");
11
-
12
9
  var _react = require("react");
13
-
14
10
  var cocoSsd = _interopRequireWildcard(require("@tensorflow-models/coco-ssd"));
15
-
16
11
  var tf = _interopRequireWildcard(require("@tensorflow/tfjs"));
17
-
18
12
  var _utils = require("../utils");
19
-
20
13
  var _defaults = require("../constants/defaults");
21
-
22
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
-
24
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
16
  const getUserCount = async (model, image) => {
27
17
  try {
28
18
  let predictions = await model.detect(image);
@@ -35,7 +25,6 @@ const getUserCount = async (model, image) => {
35
25
  return numOfUsers;
36
26
  } catch (err) {}
37
27
  };
38
-
39
28
  function useWebcamData(webcamReference, canvasReference, proctorParams) {
40
29
  const [userCount, setUserCount] = (0, _react.useState)(_defaults.initialValues.userCount);
41
30
  const isWatching = (0, _react.useState)(_defaults.initialValues.isWatching);
@@ -55,12 +44,10 @@ function useWebcamData(webcamReference, canvasReference, proctorParams) {
55
44
  const b64Snapshot = webcamReference.current.getScreenshot();
56
45
  const webcamSnapShot = new Image(videoWidth, videoHeight);
57
46
  webcamSnapShot.src = b64Snapshot;
58
-
59
47
  webcamSnapShot.onload = async () => {
60
48
  const count = await getUserCount(model, webcamSnapShot);
61
49
  setUserCount(count);
62
50
  };
63
-
64
51
  canvasReference.current.width = videoWidth;
65
52
  canvasReference.current.height = videoHeight;
66
53
  }
@@ -69,7 +56,6 @@ function useWebcamData(webcamReference, canvasReference, proctorParams) {
69
56
  return;
70
57
  }
71
58
  };
72
-
73
59
  loadCocoSSDModel();
74
60
  }
75
61
  }, [webcamReference, canvasReference, proctorParams.people, proctorParams.lookedAwayCount]);
package/dist/index.js CHANGED
@@ -15,5 +15,4 @@ Object.defineProperty(exports, "ProctoredContextApp", {
15
15
  return _components.ProctoredContextApp;
16
16
  }
17
17
  });
18
-
19
18
  var _components = require("./components");
@@ -4,13 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isArrayValid = void 0;
7
-
8
7
  const isArrayValid = array => {
9
8
  if (!array || !(array instanceof Array) || array.length <= 0) {
10
9
  return false;
11
10
  }
12
-
13
11
  return true;
14
12
  };
15
-
16
13
  exports.isArrayValid = isArrayValid;
@@ -4,63 +4,43 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.showProctoredComponent = exports.isWebcamRequired = exports.getRequiredPermissionsFromProctorParams = exports.getInitialStats = exports.getDataOnBreach = void 0;
7
-
8
7
  var _defaults = require("../constants/defaults");
9
-
10
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
11
  const getInitialStats = proctorParams => {
17
12
  const initialStats = {};
18
-
19
13
  if (proctorParams.people) {
20
14
  initialStats[_defaults.STATS_PARAMS.userCountMax] = _defaults.initialValues.userCount;
21
15
  }
22
-
23
16
  if (proctorParams.tabSwitch) {
24
17
  initialStats[_defaults.STATS_PARAMS.isTabSwitched] = _defaults.initialValues.isTabSwitched;
25
18
  }
26
-
27
19
  if (proctorParams.fullscreenExit) {
28
20
  initialStats[_defaults.STATS_PARAMS.isFullscreen] = _defaults.initialValues.isFullscreen;
29
21
  }
30
-
31
22
  if (proctorParams.lookedAway) {
32
23
  initialStats[_defaults.STATS_PARAMS.lookedAwayCount] = _defaults.initialValues.lookedAwayCount;
33
24
  }
34
-
35
25
  return initialStats;
36
26
  };
37
-
38
27
  exports.getInitialStats = getInitialStats;
39
-
40
28
  const getRequiredPermissionsFromProctorParams = proctorParams => {
41
29
  const requiredPermissions = [];
42
-
43
30
  for (const key in proctorParams) {
44
31
  if (proctorParams[key] && _defaults.proctorParamsToPermission[key]) {
45
32
  requiredPermissions.push(_defaults.proctorParamsToPermission[key]);
46
33
  }
47
34
  }
48
-
49
35
  return requiredPermissions;
50
36
  };
51
-
52
37
  exports.getRequiredPermissionsFromProctorParams = getRequiredPermissionsFromProctorParams;
53
-
54
38
  const isWebcamRequired = proctorParams => proctorParams.people || proctorParams.lookedAway || proctorParams.webcamSnapshots;
55
-
56
39
  exports.isWebcamRequired = isWebcamRequired;
57
-
58
40
  const showProctoredComponent = (proctorParams, hasAllPermission) => {
59
41
  return hasAllPermission(getRequiredPermissionsFromProctorParams(proctorParams));
60
42
  };
61
-
62
43
  exports.showProctoredComponent = showProctoredComponent;
63
-
64
44
  const getDataOnBreach = (statistics, currentData, proctorParams) => {
65
45
  const {
66
46
  userCount,
@@ -72,7 +52,6 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
72
52
  const timestamp = Date.now();
73
53
  const data = statistics.current;
74
54
  const isWebCamNotReliableParam = _defaults.STATS_PARAMS.isWebcamNotReliable;
75
-
76
55
  if (isWebcamRequired(proctorParams) && data[isWebCamNotReliableParam]) {
77
56
  return {
78
57
  breachedParam: isWebCamNotReliableParam,
@@ -82,9 +61,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
82
61
  })
83
62
  };
84
63
  }
85
-
86
64
  const userCountMaxParam = _defaults.STATS_PARAMS.userCountMax;
87
-
88
65
  if (proctorParams.people && data[userCountMaxParam] < userCount) {
89
66
  return {
90
67
  breachedParam: userCountMaxParam,
@@ -94,9 +71,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
94
71
  })
95
72
  };
96
73
  }
97
-
98
74
  const isTabSwitchedParam = _defaults.STATS_PARAMS.isTabSwitched;
99
-
100
75
  if (proctorParams.tabSwitch && isTabSwitched && !data[isTabSwitchedParam]) {
101
76
  return {
102
77
  breachedParam: isTabSwitchedParam,
@@ -106,9 +81,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
106
81
  })
107
82
  };
108
83
  }
109
-
110
84
  const fullscreenExitParam = _defaults.STATS_PARAMS.isFullscreen;
111
-
112
85
  if (proctorParams.fullscreenExit && !isFullScreen && data[fullscreenExitParam]) {
113
86
  return {
114
87
  breachedParam: fullscreenExitParam,
@@ -118,9 +91,7 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
118
91
  })
119
92
  };
120
93
  }
121
-
122
94
  const lookedAwayParam = _defaults.STATS_PARAMS.lookedAwayCount;
123
-
124
95
  if (proctorParams.lookedAway && data[lookedAwayParam] !== lookedAwayCount) {
125
96
  return {
126
97
  breachedParam: lookedAwayParam,
@@ -131,5 +102,4 @@ const getDataOnBreach = (statistics, currentData, proctorParams) => {
131
102
  };
132
103
  }
133
104
  };
134
-
135
105
  exports.getDataOnBreach = getDataOnBreach;
@@ -4,55 +4,40 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isChrome = exports.getVisibilityChangeEventName = exports.getIsDocumentVisible = exports.getBrowserFullscreenElementProp = void 0;
7
-
8
7
  require("core-js/modules/es.regexp.exec.js");
9
-
10
8
  require("core-js/modules/es.string.match.js");
11
-
12
9
  const PROPERTY_TYPES = {
13
10
  HIDDEN: "hidden",
14
11
  VISIBILITY_CHANGE: "visibilitychange"
15
12
  };
16
-
17
13
  const getBrowserPropPrefix = () => {
18
14
  if (typeof document.msHidden !== "undefined") {
19
15
  return "ms";
20
16
  } else if (typeof document.webkitHidden !== "undefined") {
21
17
  return "webkit";
22
18
  }
23
-
24
19
  return "";
25
20
  };
26
-
27
21
  const getBrowserPropForHidden = () => {
28
22
  if (typeof document.hidden !== "undefined") {
29
23
  return "hidden";
30
24
  }
31
-
32
25
  return "".concat(getBrowserPropPrefix(), "Hidden");
33
26
  };
34
-
35
27
  const getBrowserDocumentProp = type => {
36
28
  switch (type) {
37
29
  case PROPERTY_TYPES.HIDDEN:
38
30
  return getBrowserPropForHidden();
39
-
40
31
  case PROPERTY_TYPES.VISIBILITY_CHANGE:
41
32
  return "".concat(getBrowserPropPrefix(), "visibilitychange");
42
-
43
33
  default:
44
34
  return "";
45
35
  }
46
36
  };
47
-
48
37
  const getIsDocumentVisible = () => !document[getBrowserDocumentProp(PROPERTY_TYPES.HIDDEN)];
49
-
50
38
  exports.getIsDocumentVisible = getIsDocumentVisible;
51
-
52
39
  const getVisibilityChangeEventName = () => getBrowserDocumentProp(PROPERTY_TYPES.VISIBILITY_CHANGE);
53
-
54
40
  exports.getVisibilityChangeEventName = getVisibilityChangeEventName;
55
-
56
41
  const getBrowserFullscreenElementProp = () => {
57
42
  if (typeof document.fullscreenElement !== "undefined") {
58
43
  return "fullscreenElement";
@@ -64,9 +49,6 @@ const getBrowserFullscreenElementProp = () => {
64
49
  return "webkitFullscreenElement";
65
50
  }
66
51
  };
67
-
68
52
  exports.getBrowserFullscreenElementProp = getBrowserFullscreenElementProp;
69
-
70
53
  const isChrome = () => !!navigator.userAgent.match(/chrome|chromium/i);
71
-
72
54
  exports.isChrome = isChrome;
@@ -4,26 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isGPUAvailable = void 0;
7
-
8
7
  require("core-js/modules/web.dom-collections.iterator.js");
9
-
10
8
  require("core-js/modules/es.array.includes.js");
11
-
12
9
  require("core-js/modules/es.string.includes.js");
13
-
14
10
  var _defaults = require("../constants/defaults");
15
-
16
11
  const isGPUAvailable = () => {
17
12
  const canvas = document.createElement("canvas");
18
13
  const webgl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
19
14
  const debugInfo = webgl.getExtension("webgl_debug_renderer_info");
20
15
  const gpu = webgl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL).toLowerCase();
21
-
22
16
  for (const gpuType of _defaults.gpuTypes) {
23
17
  if (gpu.includes(gpuType)) return true;
24
18
  }
25
-
26
19
  return false;
27
20
  };
28
-
29
21
  exports.isGPUAvailable = isGPUAvailable;
@@ -69,11 +69,7 @@ Object.defineProperty(exports, "updateStatistics", {
69
69
  return _webcamMicrophoneUtils.updateStatistics;
70
70
  }
71
71
  });
72
-
73
72
  var _webcamMicrophoneUtils = require("./webcamMicrophoneUtils");
74
-
75
73
  var _browserUtils = require("./browserUtils");
76
-
77
74
  var _arrayUtils = require("./arrayUtils");
78
-
79
75
  var _gpuUtils = require("./gpuUtils");
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/web.dom-collections.iterator.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _react = _interopRequireWildcard(require("react"));
11
-
12
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
-
14
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
-
16
11
  const loadable = function loadable(importFunc) {
17
12
  let {
18
13
  fallback = null
@@ -24,6 +19,5 @@ const loadable = function loadable(importFunc) {
24
19
  fallback: fallback
25
20
  }, /*#__PURE__*/_react.default.createElement(LazyComponent, props));
26
21
  };
27
-
28
22
  var _default = loadable;
29
23
  exports.default = _default;
@@ -4,33 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.updateVideoPermissions = exports.updateStatistics = exports.updateAudioPermissions = exports.setupScreensharePermission = exports.isWebcamVideoValid = exports.getVideoPermissionQuery = exports.getVideoPermission = exports.getGlancePercentage = exports.getAudioVideoPermission = exports.getAudioPermissionQuery = exports.getAudioPermission = exports.captureWebcamSnapshot = exports.captureScreenshot = void 0;
7
-
8
7
  require("core-js/modules/es.array-buffer.slice.js");
9
-
10
8
  require("core-js/modules/es.typed-array.uint8-array.js");
11
-
12
9
  require("core-js/modules/es.typed-array.fill.js");
13
-
14
10
  require("core-js/modules/es.typed-array.set.js");
15
-
16
11
  require("core-js/modules/es.typed-array.sort.js");
17
-
18
12
  require("core-js/modules/es.typed-array.to-locale-string.js");
19
-
20
13
  require("core-js/modules/es.promise.js");
21
-
22
14
  var _ = require(".");
23
-
24
15
  var _html2canvas = _interopRequireDefault(require("html2canvas"));
25
-
26
16
  var _defaults = require("../constants/defaults");
27
-
28
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
18
  const isWebcamVideoValid = webcamReference => webcamReference !== null && webcamReference !== undefined && typeof webcamReference.current !== "undefined" && webcamReference.current !== null && webcamReference.current.video.readyState === 4;
31
-
32
19
  exports.isWebcamVideoValid = isWebcamVideoValid;
33
-
34
20
  const updateStatistics = (statistics, currentStats, proctorParams) => {
35
21
  const {
36
22
  isTabSwitched,
@@ -39,44 +25,36 @@ const updateStatistics = (statistics, currentStats, proctorParams) => {
39
25
  userCount,
40
26
  isWebcamDataReliable
41
27
  } = currentStats;
42
-
43
28
  if (proctorParams.tabSwitch) {
44
29
  statistics.current[_defaults.STATS_PARAMS.isTabSwitched] = isTabSwitched;
45
30
  }
46
-
47
31
  if (proctorParams.fullscreenExit) {
48
32
  statistics.current[_defaults.STATS_PARAMS.isFullscreen] = isFullScreen;
49
33
  }
50
-
51
34
  if (proctorParams.lookedAway) {
52
35
  statistics.current[_defaults.STATS_PARAMS.lookedAwayCount] = lookedAwayCount;
53
36
  }
54
-
55
37
  if (proctorParams.people) {
56
38
  statistics.current[_defaults.STATS_PARAMS.userCountMax] = Math.max(userCount, statistics.current[_defaults.STATS_PARAMS.userCountMax]);
57
39
  }
58
-
59
40
  statistics.current.IS_WEBCAM_DATA_RELIABLE = isWebcamDataReliable;
60
41
  };
61
-
62
42
  exports.updateStatistics = updateStatistics;
63
-
64
43
  const getGlancePercentage = partSegmentation => {
65
44
  if (!partSegmentation || !(partSegmentation instanceof Object) || !(0, _.isArrayValid)(partSegmentation.allPoses)) {
66
45
  return 0.0;
67
46
  }
68
-
69
47
  const allPoses = partSegmentation.allPoses;
70
48
  let totalScoreLeftEye = 0.0,
71
- totalScoreRightEye = 0.0,
72
- totalScoreNose = 0.0,
73
- totalScoreLeftEar = 0.0,
74
- totalScoreRightEar = 0.0;
49
+ totalScoreRightEye = 0.0,
50
+ totalScoreNose = 0.0,
51
+ totalScoreLeftEar = 0.0,
52
+ totalScoreRightEar = 0.0;
75
53
  let noseIndex = 0,
76
- leftEyeIndex = 1,
77
- rightEyeIndex = 2,
78
- leftEarIndex = 3,
79
- rightEarIndex = 4;
54
+ leftEyeIndex = 1,
55
+ rightEyeIndex = 2,
56
+ leftEarIndex = 3,
57
+ rightEarIndex = 4;
80
58
  allPoses.forEach(poseArray => {
81
59
  let keypointsArray = poseArray.keypoints;
82
60
  totalScoreNose += keypointsArray[noseIndex].score;
@@ -86,39 +64,31 @@ const getGlancePercentage = partSegmentation => {
86
64
  totalScoreRightEar += keypointsArray[rightEarIndex].score;
87
65
  });
88
66
  const avgScoreLeftEye = totalScoreLeftEye / allPoses.length,
89
- avgScoreRightEye = totalScoreRightEye / allPoses.length,
90
- avgScoreNose = totalScoreNose / allPoses.length,
91
- avgScoreLeftEar = totalScoreLeftEar / allPoses.length,
92
- avgScoreRightEar = totalScoreRightEar / allPoses.length;
67
+ avgScoreRightEye = totalScoreRightEye / allPoses.length,
68
+ avgScoreNose = totalScoreNose / allPoses.length,
69
+ avgScoreLeftEar = totalScoreLeftEar / allPoses.length,
70
+ avgScoreRightEar = totalScoreRightEar / allPoses.length;
93
71
  const avgPercentage = 100 * (avgScoreLeftEye + avgScoreRightEye + avgScoreNose + avgScoreLeftEar + avgScoreRightEar) / 5;
94
72
  return Math.ceil(avgPercentage);
95
73
  };
96
-
97
74
  exports.getGlancePercentage = getGlancePercentage;
98
-
99
75
  const getVideoPermission = function getVideoPermission(stream) {
100
76
  let exludeTrackId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
101
77
  return stream.getVideoTracks().filter(track => track.enabled && track.label && track.id !== exludeTrackId).length > 0;
102
78
  };
103
-
104
79
  exports.getVideoPermission = getVideoPermission;
105
-
106
80
  const getAudioPermission = function getAudioPermission(stream) {
107
81
  let exludeTrackId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
108
82
  return stream.getAudioTracks().filter(track => track.enabled && track.label && !track.muted && track.id !== exludeTrackId).length > 0;
109
83
  };
110
-
111
84
  exports.getAudioPermission = getAudioPermission;
112
-
113
85
  const getAudioVideoPermission = stream => {
114
86
  return {
115
87
  audio: getAudioPermission(stream),
116
88
  video: getVideoPermission(stream)
117
89
  };
118
90
  };
119
-
120
91
  exports.getAudioVideoPermission = getAudioVideoPermission;
121
-
122
92
  const updateAudioPermissions = setAudioPermission => {
123
93
  navigator.mediaDevices.getUserMedia({
124
94
  audio: true
@@ -128,9 +98,7 @@ const updateAudioPermissions = setAudioPermission => {
128
98
  setAudioPermission(false);
129
99
  });
130
100
  };
131
-
132
101
  exports.updateAudioPermissions = updateAudioPermissions;
133
-
134
102
  const updateVideoPermissions = setVideoPermission => {
135
103
  navigator.mediaDevices.getUserMedia({
136
104
  video: true
@@ -140,18 +108,14 @@ const updateVideoPermissions = setVideoPermission => {
140
108
  setVideoPermission(false);
141
109
  });
142
110
  };
143
-
144
111
  exports.updateVideoPermissions = updateVideoPermissions;
145
-
146
112
  const setupScreensharePermission = (setScreensharePermission, screenshareReference) => navigator.mediaDevices.getDisplayMedia({
147
113
  video: true
148
114
  }).then(stream => {
149
115
  const track = stream.getTracks()[0];
150
-
151
116
  if (track.getSettings().displaySurface === "monitor") {
152
117
  setScreensharePermission(true);
153
118
  screenshareReference.current = stream;
154
-
155
119
  track.onended = e => {
156
120
  setScreensharePermission(false);
157
121
  screenshareReference.current = null;
@@ -165,52 +129,42 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
165
129
  screenshareReference.current = null;
166
130
  setScreensharePermission(false);
167
131
  });
168
-
169
132
  exports.setupScreensharePermission = setupScreensharePermission;
170
-
171
133
  const getVideoPermissionQuery = () => navigator.permissions.query({
172
134
  name: "camera"
173
135
  });
174
-
175
136
  exports.getVideoPermissionQuery = getVideoPermissionQuery;
176
-
177
137
  const getAudioPermissionQuery = () => navigator.permissions.query({
178
138
  name: "microphone"
179
139
  });
180
-
181
140
  exports.getAudioPermissionQuery = getAudioPermissionQuery;
182
-
183
141
  const b64DataURItoBlob = dataURI => {
184
142
  const byteString = window.atob(dataURI.split(",")[1]);
185
143
  const mimeString = dataURI.split(",")[0].split(":")[1].split(";")[0];
186
144
  const u8arr = new Uint8Array(byteString.length);
187
-
188
145
  for (let i = 0; i < byteString.length; i += 1) {
189
146
  u8arr[i] = byteString.charCodeAt(i);
190
147
  }
191
-
192
148
  return new Blob([u8arr], {
193
149
  type: mimeString
194
150
  });
195
151
  };
196
-
197
152
  const captureWebcamSnapshot = webcamReference => {
198
153
  try {
199
154
  const b64Snapshot = webcamReference.current.getScreenshot();
200
155
  return b64DataURItoBlob(b64Snapshot);
201
- } catch (e) {// pass
156
+ } catch (e) {
157
+ // pass
202
158
  }
203
159
  };
204
-
205
160
  exports.captureWebcamSnapshot = captureWebcamSnapshot;
206
-
207
161
  const captureScreenshot = async () => {
208
162
  try {
209
163
  const canvas = await (0, _html2canvas.default)(document.querySelector("#ss-ref"));
210
164
  const b64Snapshot = canvas.toDataURL("image/jpeg");
211
165
  return b64DataURItoBlob(b64Snapshot);
212
- } catch (e) {// pass
166
+ } catch (e) {
167
+ // pass
213
168
  }
214
169
  };
215
-
216
170
  exports.captureScreenshot = captureScreenshot;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonschool/react_proctoring_library",
3
- "version": "0.0.37",
3
+ "version": "0.0.38",
4
4
  "description": "Used to proctor online tests",
5
5
  "author": "ayushkagrawal,shreyachandra,weastel",
6
6
  "main": "dist/index.js",