@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.
- package/package.json +1 -1
- package/dist/assets/images/newton-school-logo.png +0 -0
- package/dist/assets/images/url-video-permission-highlight.png +0 -0
- package/dist/assets/videos/ask-permission.mp4 +0 -0
- package/dist/components/ProctorApp.js +0 -181
- package/dist/components/ProctoredContextApp.js +0 -109
- package/dist/components/activity-tracker/index.js +0 -150
- package/dist/components/activity-tracker/index.scss +0 -7
- package/dist/components/index.js +0 -47
- package/dist/components/index.scss +0 -8
- package/dist/components/permissions/index.js +0 -77
- package/dist/components/permissions/index.scss +0 -6
- package/dist/components/permissions/permission-body.js +0 -60
- package/dist/components/proctor-app/Loadable.js +0 -26
- package/dist/components/proctor-app/index.js +0 -181
- package/dist/components/proctor-app/index.scss +0 -12
- package/dist/components/proctor-context-app/Loadable.js +0 -26
- package/dist/components/proctor-context-app/index.js +0 -108
- package/dist/components/screenshare/index.js +0 -40
- package/dist/components/screenshare/index.scss +0 -4
- package/dist/constants/defaults.js +0 -54
- package/dist/constants/text.js +0 -60
- package/dist/hooks/index.js +0 -23
- package/dist/hooks/useFullScreenData.js +0 -43
- package/dist/hooks/usePageVisibility.js +0 -31
- package/dist/hooks/useTabSwitchCount.js +0 -25
- package/dist/hooks/useWebcamData.js +0 -82
- package/dist/index.js +0 -19
- package/dist/proctoringTracker/tracker.js +0 -17
- package/dist/proctoringTracker/trackerWrapper.js +0 -1
- package/dist/utils/arrayUtils.js +0 -16
- package/dist/utils/breachUtils.js +0 -135
- package/dist/utils/browserUtils.js +0 -72
- package/dist/utils/gpuUtils.js +0 -29
- package/dist/utils/index.js +0 -79
- package/dist/utils/loadable.js +0 -29
- package/dist/utils/webcamMicrophoneUtils.js +0 -223
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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;
|
package/dist/components/index.js
DELETED
|
@@ -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,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;
|