@newtonschool/react_proctoring_library 0.0.23 → 0.0.26

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,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/es.object.assign.js");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -15,6 +13,8 @@ var _react = _interopRequireWildcard(require("react"));
15
13
 
16
14
  require("./index.scss");
17
15
 
16
+ var _ = require(".");
17
+
18
18
  var _utils = require("../utils");
19
19
 
20
20
  var _hooks = require("../hooks");
@@ -29,18 +29,12 @@ var _webcamMicrophoneUtils = require("../utils/webcamMicrophoneUtils");
29
29
 
30
30
  var _defaults = require("../constants/defaults");
31
31
 
32
- var _activityTracker = _interopRequireDefault(require("./activity-tracker"));
33
-
34
- var _browserUtils = require("../utils/browserUtils");
35
-
36
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
33
 
38
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
35
 
40
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
37
 
42
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
43
-
44
38
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
39
 
46
40
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -52,43 +46,25 @@ const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
52
46
  const ProctorApp = _ref => {
53
47
  let {
54
48
  proctoringIdentifier,
55
- customPermissionView = null,
56
- shouldRenderChildren = false,
57
- permissionPassedProps = {},
58
49
  children,
59
- proctoredContext,
60
50
  config,
51
+ screensharePermission,
52
+ requestScreenshare = () => {},
61
53
  getProctorParamValues = () => {},
62
54
  getWebcamSnapshot = () => {},
63
55
  getScreengrab = () => {}
64
56
  } = _ref;
65
- const [renderChildren, setRenderChildren] = (0, _react.useState)();
66
- const context = (0, _react.useContext)(proctoredContext);
67
- const {
68
- actions,
69
- permissions,
70
- references,
71
- permissionSetter,
72
- customProps,
73
- customSetter
74
- } = context;
75
- (0, _react.useEffect)(() => {
76
- if (customProps.childrenRenderer === undefined) {
77
- setRenderChildren(!shouldRenderChildren);
78
- } else {
79
- setRenderChildren(customProps.childrenRenderer);
80
- }
81
- }, [customProps]);
82
- const CustomPermissionView = customPermissionView;
83
- const browserDetails = {
84
- isChrome: (0, _browserUtils.isChrome)()
85
- };
57
+ const webcamReference = (0, _react.useRef)(null);
58
+ const canvasReference = (0, _react.useRef)(null);
86
59
  const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
87
60
  const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
88
61
  const {
89
62
  recurring = false,
90
63
  recurringFetchInterval = 0
91
64
  } = config;
65
+ const [audioPermission, setAudioPermission] = (0, _react.useState)();
66
+ const [videoPermission, setVideoPermission] = (0, _react.useState)();
67
+ const firstFullScreenDone = (0, _react.useRef)(false);
92
68
  const recurringFetchIntervalRef = (0, _react.useRef)(null);
93
69
  const sendScreengrab = (0, _react.useCallback)(async function () {
94
70
  let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -104,9 +80,9 @@ const ProctorApp = _ref => {
104
80
  let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
105
81
 
106
82
  if (proctorParams.webcamSnapshots) {
107
- const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(references.webcamReference);
83
+ const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(webcamReference);
108
84
 
109
- if (references.webcamReference) {
85
+ if (webcamReference) {
110
86
  getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
111
87
  }
112
88
  }
@@ -116,8 +92,12 @@ const ProctorApp = _ref => {
116
92
  let breachParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
117
93
  getProctorParamValues(proctoringIdentifier, statistics.current, isBreach, breachParam);
118
94
  }, [proctoringIdentifier, getProctorParamValues]);
119
- const [userCount, lookedAwayCount] = (0, _useWebcamData.default)(references.webcamReference, references.canvasReference, proctorParams);
120
- const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch);
95
+ const {
96
+ isFullscreen,
97
+ setFullscreen
98
+ } = (0, _hooks.useFullscreenData)(firstFullScreenDone, proctorParams.fullscreenExit);
99
+ const [userCount, lookedAwayCount] = (0, _useWebcamData.default)(webcamReference, canvasReference, proctorParams);
100
+ const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch) && firstFullScreenDone.current;
121
101
  (0, _react.useEffect)(() => {
122
102
  if (recurring) {
123
103
  recurringFetchIntervalRef.current = setInterval(() => {
@@ -135,9 +115,9 @@ const ProctorApp = _ref => {
135
115
  const currentStats = {
136
116
  userCount,
137
117
  isTabSwitched,
138
- isFullScreen: permissions.fullscreen,
118
+ isFullscreen,
139
119
  lookedAwayCount,
140
- isWebcamDataNotReliable: !isWebcamProcessingReliable
120
+ isWebcamDataReliable: isWebcamProcessingReliable
141
121
  };
142
122
  const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
143
123
  (0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
@@ -147,32 +127,28 @@ const ProctorApp = _ref => {
147
127
  sendWebcamSnapshot(true, breachData.breachedParam);
148
128
  sendScreengrab(true, breachData.breachedParam);
149
129
  }
150
- }, [userCount, isTabSwitched, permissions.fullscreen, lookedAwayCount, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
130
+ }, [userCount, isTabSwitched, isFullscreen, lookedAwayCount, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
151
131
  return /*#__PURE__*/_react.default.createElement("div", {
152
- className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth" : "fullwidth")
153
- }, (0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren && children, !((0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren) && customPermissionView && /*#__PURE__*/_react.default.createElement(CustomPermissionView, _extends({
154
- permissions: permissions,
155
- hasAllPermission: actions.hasAllPermission,
156
- askPermission: actions.askPermission,
157
- references: references,
158
- actions: actions,
159
- browserDetails: browserDetails,
160
- renderChildren: () => {
161
- setRenderChildren(true);
162
- customSetter.childrenRenderer(true);
163
- }
164
- }, permissionPassedProps)), !((0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren) && !customPermissionView && /*#__PURE__*/_react.default.createElement(_permissions.Permission, {
132
+ className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth fullheight" : "fullwidth fullheight")
133
+ }, (0, _breachUtils.showProctoredComponent)(proctorParams, {
134
+ isFullscreen,
135
+ audioPermission,
136
+ videoPermission,
137
+ screensharePermission
138
+ }) && children, /*#__PURE__*/_react.default.createElement(_permissions.Permission, {
165
139
  proctorParams: proctorParams,
166
- permissions: permissions,
167
- askPermission: actions.askPermission,
168
- hasAllPermission: actions.hasAllPermission
169
- }), /*#__PURE__*/_react.default.createElement(_activityTracker.default, {
140
+ isFullscreen: isFullscreen,
141
+ audioPermisison: audioPermission,
142
+ videoPermission: videoPermission,
143
+ setFullscreen: setFullscreen,
144
+ screensharePermission: screensharePermission,
145
+ requestScreenshare: requestScreenshare
146
+ }), /*#__PURE__*/_react.default.createElement(_.ActivityTracker, {
170
147
  proctorParams: proctorParams,
171
- setAudioPermission: permissionSetter.audio,
172
- setVideoPermission: permissionSetter.video,
173
- webcamReference: references.webcamReference,
174
- canvasReference: references.canvasReference,
175
- screenshareReference: references.screenshareReference
148
+ setAudioPermission: setAudioPermission,
149
+ setVideoPermission: setVideoPermission,
150
+ webcamReference: webcamReference,
151
+ canvasReference: canvasReference
176
152
  }));
177
153
  };
178
154
 
@@ -1,4 +1,4 @@
1
1
  .captured-video-canvas {
2
- visibility: hidden;
2
+ display: none;
3
3
  position: absolute;
4
4
  }
@@ -18,13 +18,13 @@ Object.defineProperty(exports, "FullScreenPermission", {
18
18
  Object.defineProperty(exports, "ProctorApp", {
19
19
  enumerable: true,
20
20
  get: function get() {
21
- return _ProctorApp.default;
21
+ return _Loadable.default;
22
22
  }
23
23
  });
24
24
  Object.defineProperty(exports, "ProctoredContextApp", {
25
25
  enumerable: true,
26
26
  get: function get() {
27
- return _ProctoredContextApp.default;
27
+ return _Loadable2.default;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "ScreenshareTracker", {
@@ -40,8 +40,8 @@ var _permissions = require("./permissions");
40
40
 
41
41
  var _screenshare = require("./screenshare");
42
42
 
43
- var _ProctorApp = _interopRequireDefault(require("./ProctorApp"));
43
+ var _Loadable = _interopRequireDefault(require("./proctor-app/Loadable"));
44
44
 
45
- var _ProctoredContextApp = _interopRequireDefault(require("./ProctoredContextApp"));
45
+ var _Loadable2 = _interopRequireDefault(require("./proctor-context-app/Loadable"));
46
46
 
47
47
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -6,3 +6,7 @@
6
6
  .fullwidth {
7
7
  width: 100%;
8
8
  }
9
+ .fullheight {
10
+ height: 100%;
11
+ overflow-y: scroll;
12
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _loadable = _interopRequireDefault(require("../../utils/loadable"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
23
+ fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
24
+ });
25
+
26
+ exports.default = _default;
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.assign.js");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.ProctorApp = void 0;
9
+
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+
12
+ require("core-js/modules/es.promise.js");
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ require("./index.scss");
17
+
18
+ var _utils = require("../../utils");
19
+
20
+ var _hooks = require("../../hooks");
21
+
22
+ var _permissions = require("../permissions");
23
+
24
+ var _useWebcamData = _interopRequireDefault(require("../../hooks/useWebcamData"));
25
+
26
+ var _breachUtils = require("../../utils/breachUtils");
27
+
28
+ var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
29
+
30
+ var _defaults = require("../../constants/defaults");
31
+
32
+ var _activityTracker = _interopRequireDefault(require("../activity-tracker"));
33
+
34
+ var _browserUtils = require("../../utils/browserUtils");
35
+
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+
38
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
+
40
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
+
42
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
43
+
44
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
+
46
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
47
+
48
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
49
+
50
+ const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
51
+
52
+ const ProctorApp = _ref => {
53
+ let {
54
+ proctoringIdentifier,
55
+ customPermissionView = null,
56
+ shouldRenderChildren = false,
57
+ permissionPassedProps = {},
58
+ children,
59
+ proctoredContext,
60
+ config,
61
+ getProctorParamValues = () => {},
62
+ getWebcamSnapshot = () => {},
63
+ getScreengrab = () => {}
64
+ } = _ref;
65
+ const [renderChildren, setRenderChildren] = (0, _react.useState)();
66
+ const context = (0, _react.useContext)(proctoredContext);
67
+ const {
68
+ actions,
69
+ permissions,
70
+ references,
71
+ permissionSetter,
72
+ customProps,
73
+ customSetter
74
+ } = context;
75
+ (0, _react.useEffect)(() => {
76
+ if (customProps.childrenRenderer === undefined) {
77
+ setRenderChildren(!shouldRenderChildren);
78
+ } else {
79
+ setRenderChildren(customProps.childrenRenderer);
80
+ }
81
+ }, [customProps]);
82
+ const CustomPermissionView = customPermissionView;
83
+ const browserDetails = {
84
+ isChrome: (0, _browserUtils.isChrome)()
85
+ };
86
+ const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
87
+ const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
88
+ const {
89
+ recurring = false,
90
+ recurringFetchInterval = 0
91
+ } = config;
92
+ const recurringFetchIntervalRef = (0, _react.useRef)(null);
93
+ const sendScreengrab = (0, _react.useCallback)(async function () {
94
+ let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
95
+ let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
96
+
97
+ if (proctorParams.screenshareSnapshots && permissions.screenshare) {
98
+ const screenshot = await (0, _webcamMicrophoneUtils.captureScreenshot)();
99
+ getScreengrab(proctoringIdentifier, screenshot, isBreach, breachedParam);
100
+ }
101
+ }, [getScreengrab, proctoringIdentifier, proctorParams.screenshareSnapshots]);
102
+ const sendWebcamSnapshot = (0, _react.useCallback)(function () {
103
+ let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
104
+ let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
105
+
106
+ if (proctorParams.webcamSnapshots && permissions.video) {
107
+ const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(references.webcamReference);
108
+
109
+ if (references.webcamReference) {
110
+ getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
111
+ }
112
+ }
113
+ }, [proctoringIdentifier, getWebcamSnapshot, proctorParams.webcamSnapshots]);
114
+ const sendProctoredParamValues = (0, _react.useCallback)(function () {
115
+ let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
116
+ let breachParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
117
+ getProctorParamValues(proctoringIdentifier, statistics.current, isBreach, breachParam);
118
+ }, [proctoringIdentifier, getProctorParamValues]);
119
+ const [userCount, lookedAwayCount] = (0, _useWebcamData.default)(references.webcamReference, references.canvasReference, proctorParams);
120
+ const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch);
121
+ (0, _react.useEffect)(() => {
122
+ if (recurring) {
123
+ recurringFetchIntervalRef.current = setInterval(() => {
124
+ sendProctoredParamValues();
125
+ sendWebcamSnapshot();
126
+ sendScreengrab();
127
+ }, recurringFetchInterval);
128
+ }
129
+
130
+ return () => {
131
+ clearInterval(recurringFetchIntervalRef.current);
132
+ };
133
+ }, [recurring, recurringFetchInterval, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab]);
134
+ (0, _react.useEffect)(() => {
135
+ const currentStats = {
136
+ userCount,
137
+ isTabSwitched,
138
+ isFullScreen: permissions.fullscreen,
139
+ lookedAwayCount,
140
+ isWebcamDataNotReliable: !isWebcamProcessingReliable
141
+ };
142
+ const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
143
+ (0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
144
+
145
+ if (breachData) {
146
+ sendProctoredParamValues(true, breachData.breachedParam);
147
+ sendWebcamSnapshot(true, breachData.breachedParam);
148
+ sendScreengrab(true, breachData.breachedParam);
149
+ }
150
+ }, [userCount, isTabSwitched, permissions.fullscreen, lookedAwayCount, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
151
+ return /*#__PURE__*/_react.default.createElement("div", {
152
+ className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth fullheight" : "fullwidth fullheight")
153
+ }, (0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren && children, !((0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren) && customPermissionView && /*#__PURE__*/_react.default.createElement(CustomPermissionView, _extends({
154
+ permissions: permissions,
155
+ hasAllPermission: actions.hasAllPermission,
156
+ askPermission: actions.askPermission,
157
+ references: references,
158
+ actions: actions,
159
+ browserDetails: browserDetails,
160
+ renderChildren: () => {
161
+ setRenderChildren(true);
162
+ customSetter.childrenRenderer(true);
163
+ }
164
+ }, permissionPassedProps)), !((0, _breachUtils.showProctoredComponent)(proctorParams, actions.hasAllPermission) && renderChildren) && !customPermissionView && /*#__PURE__*/_react.default.createElement(_permissions.Permission, {
165
+ proctorParams: proctorParams,
166
+ permissions: permissions,
167
+ askPermission: actions.askPermission,
168
+ hasAllPermission: actions.hasAllPermission
169
+ }), /*#__PURE__*/_react.default.createElement(_activityTracker.default, {
170
+ proctorParams: proctorParams,
171
+ setAudioPermission: permissionSetter.audio,
172
+ setVideoPermission: permissionSetter.video,
173
+ webcamReference: references.webcamReference,
174
+ canvasReference: references.canvasReference,
175
+ screenshareReference: references.screenshareReference
176
+ }));
177
+ };
178
+
179
+ exports.ProctorApp = ProctorApp;
180
+ var _default = ProctorApp;
181
+ exports.default = _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _loadable = _interopRequireDefault(require("../../utils/loadable"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ var _default = (0, _loadable.default)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./index"))), {
23
+ fallback: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)
24
+ });
25
+
26
+ exports.default = _default;
@@ -9,11 +9,11 @@ require("core-js/modules/web.dom-collections.iterator.js");
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
- var _hooks = require("../hooks");
12
+ var _hooks = require("../../hooks");
13
13
 
14
- var _webcamMicrophoneUtils = require("../utils/webcamMicrophoneUtils");
14
+ var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
15
15
 
16
- var _defaults = require("../constants/defaults");
16
+ var _defaults = require("../../constants/defaults");
17
17
 
18
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
19
 
@@ -47,18 +47,18 @@ const ProctoredContextApp = _ref => {
47
47
  const screenshareReference = (0, _react.useRef)(null);
48
48
  const Context = contextProvider;
49
49
  const askPermissionAction = {
50
- 'screenshare': () => {
50
+ screenshare: () => {
51
51
  (0, _webcamMicrophoneUtils.setupScreensharePermission)(setScreensharePermission, screenshareReference);
52
52
  },
53
- 'fullscreen': () => {
53
+ fullscreen: () => {
54
54
  setFullscreen();
55
55
  }
56
56
  };
57
57
  const getPermissionObj = {
58
- 'video': videoPermission,
59
- 'audio': audioPermisison,
60
- 'fullscreen': isFullscreen,
61
- 'screenshare': screensharePermission
58
+ video: videoPermission,
59
+ audio: audioPermisison,
60
+ fullscreen: isFullscreen,
61
+ screenshare: screensharePermission
62
62
  };
63
63
  const askPermission = (0, _react.useCallback)(requiredPermissions => {
64
64
  console.log(requiredPermissions);
@@ -81,25 +81,25 @@ const ProctoredContextApp = _ref => {
81
81
  value: {
82
82
  permissions: getPermissionObj,
83
83
  permissionSetter: {
84
- 'audio': setAudioPermission,
85
- 'video': setVideoPermission,
86
- 'screenshare': setScreensharePermission
84
+ audio: setAudioPermission,
85
+ video: setVideoPermission,
86
+ screenshare: setScreensharePermission
87
87
  },
88
88
  customProps: {
89
- 'childrenRenderer': customRenderer
89
+ childrenRenderer: customRenderer
90
90
  },
91
91
  customSetter: {
92
- 'childrenRenderer': setCustomRenderer
92
+ childrenRenderer: setCustomRenderer
93
93
  },
94
94
  proctorParams,
95
95
  actions: {
96
- 'askPermission': askPermission,
97
- 'hasAllPermission': hasAllPermission
96
+ askPermission: askPermission,
97
+ hasAllPermission: hasAllPermission
98
98
  },
99
99
  references: {
100
- 'webcamReference': webcamReference,
101
- 'canvasReference': canvasReference,
102
- 'screenshareReference': screenshareReference
100
+ webcamReference: webcamReference,
101
+ canvasReference: canvasReference,
102
+ screenshareReference: screenshareReference
103
103
  }
104
104
  }
105
105
  }, children);
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/web.dom-collections.iterator.js");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ const loadable = function loadable(importFunc) {
17
+ let {
18
+ fallback = null
19
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
20
+ fallback: null
21
+ };
22
+ const LazyComponent = /*#__PURE__*/(0, _react.lazy)(importFunc);
23
+ return props => /*#__PURE__*/_react.default.createElement(_react.Suspense, {
24
+ fallback: fallback
25
+ }, /*#__PURE__*/_react.default.createElement(LazyComponent, props));
26
+ };
27
+
28
+ var _default = loadable;
29
+ exports.default = _default;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.retrieveStatsFromLocalStorage = exports.removeStatsFromLocalStorage = exports.getStatistics = exports.addOrUpdateStatsToLocalStorage = void 0;
7
+
8
+ require("core-js/modules/es.json.stringify.js");
9
+
10
+ const addOrUpdateStatsToLocalStorage = (proctoringIdentifier, data) => {
11
+ const stringifiedData = JSON.stringify(data);
12
+ localStorage.setItem(proctoringIdentifier, stringifiedData);
13
+ };
14
+
15
+ exports.addOrUpdateStatsToLocalStorage = addOrUpdateStatsToLocalStorage;
16
+
17
+ const retrieveStatsFromLocalStorage = proctoringIdentifier => {
18
+ return localStorage.getItem(proctoringIdentifier);
19
+ };
20
+
21
+ exports.retrieveStatsFromLocalStorage = retrieveStatsFromLocalStorage;
22
+
23
+ const removeStatsFromLocalStorage = proctoringIdentifier => {
24
+ localStorage.removeItem(proctoringIdentifier);
25
+ };
26
+
27
+ exports.removeStatsFromLocalStorage = removeStatsFromLocalStorage;
28
+
29
+ const getStatistics = proctoringIdentifier => {
30
+ return JSON.parse(retrieveStatsFromLocalStorage(proctoringIdentifier));
31
+ };
32
+
33
+ exports.getStatistics = getStatistics;
@@ -13,8 +13,6 @@ require("core-js/modules/es.array-buffer.slice.js");
13
13
 
14
14
  require("core-js/modules/es.typed-array.uint8-array.js");
15
15
 
16
- require("core-js/modules/es.typed-array.fill.js");
17
-
18
16
  require("core-js/modules/es.typed-array.set.js");
19
17
 
20
18
  require("core-js/modules/es.typed-array.sort.js");
@@ -161,14 +159,17 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
161
159
  };
162
160
 
163
161
  track.onended = e => {
162
+ console.log(e, "Track On Ended");
164
163
  setScreensharePermission(false);
165
164
  screenshareReference.current.srcObject = null;
166
165
  };
167
166
  } else {
167
+ console.log(e, "Track get settings not monitor");
168
168
  screenshareReference.current = null;
169
169
  setScreensharePermission(false);
170
170
  }
171
171
  }).catch(e => {
172
+ console.log(e, "Try Catch Failed");
172
173
  screenshareReference.current = null;
173
174
  setScreensharePermission(false);
174
175
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonschool/react_proctoring_library",
3
- "version": "0.0.23",
3
+ "version": "0.0.26",
4
4
  "description": "Used to proctor online tests",
5
5
  "author": "ayushkagrawal,shreyachandra,weastel",
6
6
  "main": "dist/index.js",
@@ -54,4 +54,4 @@
54
54
  "@babel/preset-env": "^7.16.7",
55
55
  "react-scripts": ">=5.0.0"
56
56
  }
57
- }
57
+ }
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- class ProctoringTracker {
9
- constructor() {}
10
-
11
- askProctoredPermission() {}
12
-
13
- hasProctoredPermission() {}
14
-
15
- }
16
-
17
- exports.default = ProctoringTracker;
@@ -1 +0,0 @@
1
- "use strict";