@newtonschool/react_proctoring_library 0.0.30 → 0.0.32

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 (37) hide show
  1. package/package.json +1 -1
  2. package/dist/assets/images/newton-school-logo.png +0 -0
  3. package/dist/assets/images/url-video-permission-highlight.png +0 -0
  4. package/dist/assets/videos/ask-permission.mp4 +0 -0
  5. package/dist/components/ProctorApp.js +0 -181
  6. package/dist/components/ProctoredContextApp.js +0 -109
  7. package/dist/components/activity-tracker/index.js +0 -150
  8. package/dist/components/activity-tracker/index.scss +0 -7
  9. package/dist/components/index.js +0 -47
  10. package/dist/components/index.scss +0 -8
  11. package/dist/components/permissions/index.js +0 -77
  12. package/dist/components/permissions/index.scss +0 -6
  13. package/dist/components/permissions/permission-body.js +0 -60
  14. package/dist/components/proctor-app/Loadable.js +0 -26
  15. package/dist/components/proctor-app/index.js +0 -181
  16. package/dist/components/proctor-app/index.scss +0 -12
  17. package/dist/components/proctor-context-app/Loadable.js +0 -26
  18. package/dist/components/proctor-context-app/index.js +0 -108
  19. package/dist/components/screenshare/index.js +0 -40
  20. package/dist/components/screenshare/index.scss +0 -4
  21. package/dist/constants/defaults.js +0 -54
  22. package/dist/constants/text.js +0 -60
  23. package/dist/hooks/index.js +0 -23
  24. package/dist/hooks/useFullScreenData.js +0 -43
  25. package/dist/hooks/usePageVisibility.js +0 -31
  26. package/dist/hooks/useTabSwitchCount.js +0 -25
  27. package/dist/hooks/useWebcamData.js +0 -82
  28. package/dist/index.js +0 -19
  29. package/dist/proctoringTracker/tracker.js +0 -17
  30. package/dist/proctoringTracker/trackerWrapper.js +0 -1
  31. package/dist/utils/arrayUtils.js +0 -16
  32. package/dist/utils/breachUtils.js +0 -135
  33. package/dist/utils/browserUtils.js +0 -72
  34. package/dist/utils/gpuUtils.js +0 -29
  35. package/dist/utils/index.js +0 -79
  36. package/dist/utils/loadable.js +0 -29
  37. package/dist/utils/webcamMicrophoneUtils.js +0 -223
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newtonschool/react_proctoring_library",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "description": "Used to proctor online tests",
5
5
  "author": "ayushkagrawal,shreyachandra,weastel",
6
6
  "main": "dist/index.js",
@@ -1,181 +0,0 @@
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 ? 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
- 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) {
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) {
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" : "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, {
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;
@@ -1,109 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- require("core-js/modules/web.dom-collections.iterator.js");
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _hooks = require("../hooks");
13
-
14
- var _webcamMicrophoneUtils = require("../utils/webcamMicrophoneUtils");
15
-
16
- var _defaults = require("../constants/defaults");
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
- 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
- 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
- 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
- const ProctoredContextApp = _ref => {
29
- let {
30
- contextProvider,
31
- config = {
32
- proctorParams: _defaults.defaultConfig
33
- },
34
- children
35
- } = _ref;
36
- const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
37
- const {
38
- isFullscreen,
39
- setFullscreen
40
- } = (0, _hooks.useFullscreenData)(proctorParams.fullscreenExit);
41
- const [audioPermisison, setAudioPermission] = (0, _react.useState)();
42
- const [videoPermission, setVideoPermission] = (0, _react.useState)();
43
- const [screensharePermission, setScreensharePermission] = (0, _react.useState)();
44
- const [customRenderer, setCustomRenderer] = (0, _react.useState)();
45
- const webcamReference = (0, _react.useRef)(null);
46
- const canvasReference = (0, _react.useRef)(null);
47
- const screenshareReference = (0, _react.useRef)(null);
48
- const Context = contextProvider;
49
- const askPermissionAction = {
50
- 'screenshare': () => {
51
- (0, _webcamMicrophoneUtils.setupScreensharePermission)(setScreensharePermission, screenshareReference);
52
- },
53
- 'fullscreen': () => {
54
- setFullscreen();
55
- }
56
- };
57
- const getPermissionObj = {
58
- 'video': videoPermission,
59
- 'audio': audioPermisison,
60
- 'fullscreen': isFullscreen,
61
- 'screenshare': screensharePermission
62
- };
63
- const askPermission = (0, _react.useCallback)(requiredPermissions => {
64
- console.log(requiredPermissions);
65
- requiredPermissions.forEach(element => {
66
- if (!getPermissionObj[element] && askPermissionAction[element]) {
67
- askPermissionAction[element]();
68
- }
69
- });
70
- }, [getPermissionObj, askPermissionAction]);
71
- const hasAllPermission = (0, _react.useCallback)(requiredPermissions => {
72
- let hasPermission = true;
73
- requiredPermissions.forEach(element => {
74
- if (!getPermissionObj[element]) {
75
- hasPermission = hasPermission && false;
76
- }
77
- });
78
- return hasPermission;
79
- }, [getPermissionObj]);
80
- return /*#__PURE__*/_react.default.createElement(Context.Provider, {
81
- value: {
82
- permissions: getPermissionObj,
83
- permissionSetter: {
84
- 'audio': setAudioPermission,
85
- 'video': setVideoPermission,
86
- 'screenshare': setScreensharePermission
87
- },
88
- customProps: {
89
- 'childrenRenderer': customRenderer
90
- },
91
- customSetter: {
92
- 'childrenRenderer': setCustomRenderer
93
- },
94
- proctorParams,
95
- actions: {
96
- 'askPermission': askPermission,
97
- 'hasAllPermission': hasAllPermission
98
- },
99
- references: {
100
- 'webcamReference': webcamReference,
101
- 'canvasReference': canvasReference,
102
- 'screenshareReference': screenshareReference
103
- }
104
- }
105
- }, children);
106
- };
107
-
108
- var _default = ProctoredContextApp;
109
- exports.default = _default;
@@ -1,150 +0,0 @@
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
- var _reactWebcam = _interopRequireDefault(require("react-webcam"));
13
-
14
- var _utils = require("../../utils");
15
-
16
- var _breachUtils = require("../../utils/breachUtils");
17
-
18
- var _browserUtils = require("../../utils/browserUtils");
19
-
20
- var _webcamMicrophoneUtils = require("../../utils/webcamMicrophoneUtils");
21
-
22
- require("./index.scss");
23
-
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
- 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
- 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
- const ActivityTracker = _ref => {
31
- let {
32
- proctorParams,
33
- webcamReference,
34
- canvasReference,
35
- screenshareReference,
36
- setAudioPermission,
37
- setVideoPermission
38
- } = _ref;
39
- (0, _react.useEffect)(() => {
40
- if ((0, _browserUtils.isChrome)()) {
41
- if ((0, _breachUtils.isWebcamRequired)(proctorParams)) {
42
- (0, _webcamMicrophoneUtils.updateVideoPermissions)(setVideoPermission);
43
- (0, _webcamMicrophoneUtils.updateAudioPermissions)(setAudioPermission);
44
- (0, _webcamMicrophoneUtils.getVideoPermissionQuery)().then(status => {
45
- status.onchange = evt => {
46
- (0, _webcamMicrophoneUtils.updateVideoPermissions)(setVideoPermission);
47
- };
48
- }).catch(err => {});
49
- (0, _webcamMicrophoneUtils.getAudioPermissionQuery)().then(status => {
50
- status.onchange = evt => {
51
- (0, _webcamMicrophoneUtils.updateAudioPermissions)(setAudioPermission);
52
- };
53
- }).catch(err => {
54
- (0, _webcamMicrophoneUtils.updateAudioPermissions)("Audio Permission", err);
55
- });
56
- }
57
- }
58
- }, [setVideoPermission, setAudioPermission, proctorParams]);
59
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _breachUtils.isWebcamRequired)(proctorParams) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactWebcam.default, {
60
- audio: true,
61
- muted: true,
62
- screenshotFormat: "image/jpeg",
63
- ref: webcamReference,
64
- onUserMedia: stream => {
65
- if (!(0, _browserUtils.isChrome)()) {
66
- const {
67
- audio,
68
- video
69
- } = (0, _utils.getAudioVideoPermission)(stream);
70
- setAudioPermission(audio);
71
- setVideoPermission(video);
72
-
73
- stream.onaddtrack = p => {
74
- const {
75
- audio,
76
- video
77
- } = (0, _utils.getAudioVideoPermission)(stream);
78
- setAudioPermission(audio);
79
- setVideoPermission(video);
80
- };
81
-
82
- stream.onremovetrack = p => {
83
- const {
84
- audio,
85
- video
86
- } = (0, _utils.getAudioVideoPermission)(stream);
87
- setAudioPermission(audio);
88
- setVideoPermission(video);
89
- };
90
-
91
- stream.onactive = p => {
92
- const {
93
- audio,
94
- video
95
- } = (0, _utils.getAudioVideoPermission)(stream);
96
- setAudioPermission(audio);
97
- setVideoPermission(video);
98
- };
99
-
100
- stream.oninactive = e => {
101
- setAudioPermission(false);
102
- setVideoPermission(false);
103
- };
104
-
105
- const audioTracks = stream.getAudioTracks().filter(track => track.enabled && track.label);
106
- audioTracks.forEach(track => {
107
- track.onended = e => {
108
- const audio = (0, _utils.getAudioPermission)(stream);
109
- setAudioPermission(audio, e.currentTarget.id);
110
- };
111
-
112
- track.onmute = e => {
113
- const audio = (0, _utils.getAudioPermission)(stream);
114
- setAudioPermission(audio, e.currentTarget.id);
115
- };
116
-
117
- track.onunmute = e => {
118
- const audio = (0, _utils.getAudioPermission)(stream);
119
- setAudioPermission(audio);
120
- };
121
- });
122
- const videoTracks = stream.getVideoTracks().filter(track => track.enabled && track.label);
123
- videoTracks.forEach(track => {
124
- track.onended = e => {
125
- const video = (0, _utils.getVideoPermission)(stream, e.currentTarget.id);
126
- setVideoPermission(video);
127
- };
128
- });
129
- }
130
- },
131
- onUserMediaError: error => {
132
- if (!(0, _browserUtils.isChrome)()) {
133
- setVideoPermission(false);
134
- setAudioPermission(false);
135
- }
136
- },
137
- className: "hide"
138
- }), /*#__PURE__*/_react.default.createElement("canvas", {
139
- ref: canvasReference,
140
- className: "captured-video-canvas hide",
141
- id: "wc-ref"
142
- })), /*#__PURE__*/_react.default.createElement("video", {
143
- ref: screenshareReference,
144
- className: "captured-video-canvas hide",
145
- id: "ss-ref"
146
- }));
147
- };
148
-
149
- var _default = ActivityTracker;
150
- exports.default = _default;
@@ -1,7 +0,0 @@
1
- .captured-video-canvas {
2
- position: absolute;
3
- bottom: 0px;
4
- }
5
- .hide {
6
- visibility: hidden;
7
- }
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "ActivityTracker", {
7
- enumerable: true,
8
- get: function get() {
9
- return _activityTracker.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "FullScreenPermission", {
13
- enumerable: true,
14
- get: function get() {
15
- return _permissions.FullScreenPermission;
16
- }
17
- });
18
- Object.defineProperty(exports, "ProctorApp", {
19
- enumerable: true,
20
- get: function get() {
21
- return _Loadable.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "ProctoredContextApp", {
25
- enumerable: true,
26
- get: function get() {
27
- return _Loadable2.default;
28
- }
29
- });
30
- Object.defineProperty(exports, "ScreenshareTracker", {
31
- enumerable: true,
32
- get: function get() {
33
- return _screenshare.ScreenshareTracker;
34
- }
35
- });
36
-
37
- var _activityTracker = _interopRequireDefault(require("./activity-tracker"));
38
-
39
- var _permissions = require("./permissions");
40
-
41
- var _screenshare = require("./screenshare");
42
-
43
- var _Loadable = _interopRequireDefault(require("./proctor-app/Loadable"));
44
-
45
- var _Loadable2 = _interopRequireDefault(require("./proctor-context-app/Loadable"));
46
-
47
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,8 +0,0 @@
1
- .disable-copy-paste {
2
- -webkit-user-select: none;
3
- -ms-user-select: none;
4
- user-select: none;
5
- }
6
- .fullwidth {
7
- width: 100%;
8
- }
@@ -1,77 +0,0 @@
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.Permission = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _reactBootstrap = require("react-bootstrap");
13
-
14
- var _askPermission = _interopRequireDefault(require("../../assets/videos/ask-permission.mp4"));
15
-
16
- require("./index.scss");
17
-
18
- var text = _interopRequireWildcard(require("../../constants/text"));
19
-
20
- var _permissionBody = require("./permission-body");
21
-
22
- var _breachUtils = require("../../utils/breachUtils");
23
-
24
- 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
- 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
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
- const Permission = _ref => {
31
- let {
32
- proctorParams,
33
- permissions,
34
- askPermission,
35
- hasAllPermission
36
- } = _ref;
37
- const showPermissionModal = !hasAllPermission((0, _breachUtils.getRequiredPermissionsFromProctorParams)(proctorParams));
38
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal, {
39
- show: showPermissionModal,
40
- size: "lg",
41
- backdrop: "static",
42
- "aria-labelledby": "contained-modal-title-vcenter",
43
- centered: true
44
- }, /*#__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, {
45
- className: "font-medium"
46
- }, /*#__PURE__*/_react.default.createElement("div", {
47
- style: {
48
- borderRadius: "20px"
49
- }
50
- }, /*#__PURE__*/_react.default.createElement("video", {
51
- className: "videoStyles",
52
- width: "100%",
53
- height: "240",
54
- autoPlay: true,
55
- muted: true,
56
- loop: true,
57
- playsInline: true
58
- }, /*#__PURE__*/_react.default.createElement("source", {
59
- src: _askPermission.default
60
- }), text.VIDEO_UNSUPPORTED_IN_BROWSER)), /*#__PURE__*/_react.default.createElement(_permissionBody.PermissionBody, {
61
- showFullscreenText: !permissions.fullscreen,
62
- showAudioPermissionText: !permissions.audio && (0, _breachUtils.isWebcamRequired)(proctorParams),
63
- showVideoPermissionText: !permissions.video && (0, _breachUtils.isWebcamRequired)(proctorParams),
64
- showScreensharePermission: !permissions.screenshare && proctorParams.screenshareSnapshots
65
- })), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Footer, null, !permissions.screenshare && proctorParams.screenshareSnapshots && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
66
- onClick: () => {
67
- askPermission(['screenshare']);
68
- }
69
- }, text.ALLOW_SCREENSHARE), !permissions.fullscreen && proctorParams.fullscreenExit && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
70
- variant: "primary",
71
- onClick: () => {
72
- askPermission(['fullscreen']);
73
- }
74
- }, text.ALLOW_FULLSCREEN)));
75
- };
76
-
77
- exports.Permission = Permission;
@@ -1,6 +0,0 @@
1
- .modal-dialog {
2
- width: 400px;
3
- }
4
- .video-permission-img {
5
- width: 200px;
6
- }