@newtonschool/react_proctoring_library 0.0.28 → 0.0.31
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/dist/components/ProctorApp.js +62 -38
- package/dist/components/ProctoredContextApp.js +109 -0
- package/dist/components/activity-tracker/index.js +15 -1
- package/dist/components/index.scss +0 -4
- package/dist/components/proctor-app/index.js +1 -1
- package/dist/proctoringTracker/tracker.js +17 -0
- package/dist/proctoringTracker/trackerWrapper.js +1 -0
- package/dist/utils/webcamMicrophoneUtils.js +5 -6
- package/package.json +1 -1
- package/dist/utils/localStorageUtils.js +0 -33
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/es.object.assign.js");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -13,8 +15,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
13
15
|
|
|
14
16
|
require("./index.scss");
|
|
15
17
|
|
|
16
|
-
var _ = require(".");
|
|
17
|
-
|
|
18
18
|
var _utils = require("../utils");
|
|
19
19
|
|
|
20
20
|
var _hooks = require("../hooks");
|
|
@@ -29,12 +29,18 @@ 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
|
+
|
|
32
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
37
|
|
|
34
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); }
|
|
35
39
|
|
|
36
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; }
|
|
37
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
|
+
|
|
38
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; }
|
|
39
45
|
|
|
40
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; }
|
|
@@ -46,25 +52,43 @@ const isWebcamProcessingReliable = (0, _utils.isGPUAvailable)();
|
|
|
46
52
|
const ProctorApp = _ref => {
|
|
47
53
|
let {
|
|
48
54
|
proctoringIdentifier,
|
|
55
|
+
customPermissionView = null,
|
|
56
|
+
shouldRenderChildren = false,
|
|
57
|
+
permissionPassedProps = {},
|
|
49
58
|
children,
|
|
59
|
+
proctoredContext,
|
|
50
60
|
config,
|
|
51
|
-
screensharePermission,
|
|
52
|
-
requestScreenshare = () => {},
|
|
53
61
|
getProctorParamValues = () => {},
|
|
54
62
|
getWebcamSnapshot = () => {},
|
|
55
63
|
getScreengrab = () => {}
|
|
56
64
|
} = _ref;
|
|
57
|
-
const
|
|
58
|
-
const
|
|
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
|
+
};
|
|
59
86
|
const proctorParams = (0, _react.useMemo)(() => _objectSpread(_objectSpread({}, _defaults.defaultConfig), config.proctorParams), [config.proctorParams]);
|
|
60
87
|
const statistics = (0, _react.useRef)((0, _breachUtils.getInitialStats)(proctorParams));
|
|
61
88
|
const {
|
|
62
89
|
recurring = false,
|
|
63
90
|
recurringFetchInterval = 0
|
|
64
91
|
} = config;
|
|
65
|
-
const [audioPermission, setAudioPermission] = (0, _react.useState)();
|
|
66
|
-
const [videoPermission, setVideoPermission] = (0, _react.useState)();
|
|
67
|
-
const firstFullScreenDone = (0, _react.useRef)(false);
|
|
68
92
|
const recurringFetchIntervalRef = (0, _react.useRef)(null);
|
|
69
93
|
const sendScreengrab = (0, _react.useCallback)(async function () {
|
|
70
94
|
let isBreach = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
@@ -80,9 +104,9 @@ const ProctorApp = _ref => {
|
|
|
80
104
|
let breachedParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
81
105
|
|
|
82
106
|
if (proctorParams.webcamSnapshots) {
|
|
83
|
-
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(webcamReference);
|
|
107
|
+
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(references.webcamReference);
|
|
84
108
|
|
|
85
|
-
if (webcamReference) {
|
|
109
|
+
if (references.webcamReference) {
|
|
86
110
|
getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, isBreach, breachedParam);
|
|
87
111
|
}
|
|
88
112
|
}
|
|
@@ -92,12 +116,8 @@ const ProctorApp = _ref => {
|
|
|
92
116
|
let breachParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
93
117
|
getProctorParamValues(proctoringIdentifier, statistics.current, isBreach, breachParam);
|
|
94
118
|
}, [proctoringIdentifier, getProctorParamValues]);
|
|
95
|
-
const
|
|
96
|
-
|
|
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;
|
|
119
|
+
const [userCount, lookedAwayCount] = (0, _useWebcamData.default)(references.webcamReference, references.canvasReference, proctorParams);
|
|
120
|
+
const isTabSwitched = !(0, _hooks.usePageVisibility)(proctorParams.tabSwitch);
|
|
101
121
|
(0, _react.useEffect)(() => {
|
|
102
122
|
if (recurring) {
|
|
103
123
|
recurringFetchIntervalRef.current = setInterval(() => {
|
|
@@ -115,9 +135,9 @@ const ProctorApp = _ref => {
|
|
|
115
135
|
const currentStats = {
|
|
116
136
|
userCount,
|
|
117
137
|
isTabSwitched,
|
|
118
|
-
|
|
138
|
+
isFullScreen: permissions.fullscreen,
|
|
119
139
|
lookedAwayCount,
|
|
120
|
-
|
|
140
|
+
isWebcamDataNotReliable: !isWebcamProcessingReliable
|
|
121
141
|
};
|
|
122
142
|
const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctorParams);
|
|
123
143
|
(0, _utils.updateStatistics)(statistics, currentStats, proctorParams);
|
|
@@ -127,28 +147,32 @@ const ProctorApp = _ref => {
|
|
|
127
147
|
sendWebcamSnapshot(true, breachData.breachedParam);
|
|
128
148
|
sendScreengrab(true, breachData.breachedParam);
|
|
129
149
|
}
|
|
130
|
-
}, [userCount, isTabSwitched,
|
|
150
|
+
}, [userCount, isTabSwitched, permissions.fullscreen, lookedAwayCount, sendProctoredParamValues, sendWebcamSnapshot, sendScreengrab, proctorParams]);
|
|
131
151
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
132
|
-
className: "".concat(proctorParams.copyPasteProctoring ? "disable-copy-paste fullwidth
|
|
133
|
-
}, (0, _breachUtils.showProctoredComponent)(proctorParams, {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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, {
|
|
139
165
|
proctorParams: proctorParams,
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
screensharePermission: screensharePermission,
|
|
145
|
-
requestScreenshare: requestScreenshare
|
|
146
|
-
}), /*#__PURE__*/_react.default.createElement(_.ActivityTracker, {
|
|
166
|
+
permissions: permissions,
|
|
167
|
+
askPermission: actions.askPermission,
|
|
168
|
+
hasAllPermission: actions.hasAllPermission
|
|
169
|
+
}), /*#__PURE__*/_react.default.createElement(_activityTracker.default, {
|
|
147
170
|
proctorParams: proctorParams,
|
|
148
|
-
setAudioPermission:
|
|
149
|
-
setVideoPermission:
|
|
150
|
-
webcamReference: webcamReference,
|
|
151
|
-
canvasReference: canvasReference
|
|
171
|
+
setAudioPermission: permissionSetter.audio,
|
|
172
|
+
setVideoPermission: permissionSetter.video,
|
|
173
|
+
webcamReference: references.webcamReference,
|
|
174
|
+
canvasReference: references.canvasReference,
|
|
175
|
+
screenshareReference: references.screenshareReference
|
|
152
176
|
}));
|
|
153
177
|
};
|
|
154
178
|
|
|
@@ -0,0 +1,109 @@
|
|
|
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;
|
|
@@ -36,6 +36,20 @@ const ActivityTracker = _ref => {
|
|
|
36
36
|
setAudioPermission,
|
|
37
37
|
setVideoPermission
|
|
38
38
|
} = _ref;
|
|
39
|
+
const screenshareVideoReference = (0, _react.useRef)(null);
|
|
40
|
+
(0, _react.useEffect)(() => {
|
|
41
|
+
if (screenshareReference.current) {
|
|
42
|
+
screenshareVideoReference.current.srcObject = screenshareReference.current;
|
|
43
|
+
|
|
44
|
+
screenshareVideoReference.current.onloadedmetadata = e => {
|
|
45
|
+
screenshareVideoReference.current.play();
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return () => {
|
|
50
|
+
screenshareVideoReference.current.srcObject = null;
|
|
51
|
+
};
|
|
52
|
+
}, [screenshareReference.current]);
|
|
39
53
|
(0, _react.useEffect)(() => {
|
|
40
54
|
if ((0, _browserUtils.isChrome)()) {
|
|
41
55
|
if ((0, _breachUtils.isWebcamRequired)(proctorParams)) {
|
|
@@ -140,7 +154,7 @@ const ActivityTracker = _ref => {
|
|
|
140
154
|
className: "captured-video-canvas hide",
|
|
141
155
|
id: "wc-ref"
|
|
142
156
|
})), /*#__PURE__*/_react.default.createElement("video", {
|
|
143
|
-
ref:
|
|
157
|
+
ref: screenshareVideoReference,
|
|
144
158
|
className: "captured-video-canvas hide",
|
|
145
159
|
id: "ss-ref"
|
|
146
160
|
}));
|
|
@@ -39,7 +39,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
39
39
|
|
|
40
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
41
|
|
|
42
|
-
function _extends() { _extends = Object.assign
|
|
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
43
|
|
|
44
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
45
|
|
|
@@ -0,0 +1,17 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -13,6 +13,8 @@ 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
|
+
|
|
16
18
|
require("core-js/modules/es.typed-array.set.js");
|
|
17
19
|
|
|
18
20
|
require("core-js/modules/es.typed-array.sort.js");
|
|
@@ -152,17 +154,14 @@ const setupScreensharePermission = (setScreensharePermission, screenshareReferen
|
|
|
152
154
|
|
|
153
155
|
if (track.getSettings().displaySurface === "monitor") {
|
|
154
156
|
setScreensharePermission(true);
|
|
155
|
-
screenshareReference.current
|
|
156
|
-
|
|
157
|
-
screenshareReference.current.onloadedmetadata = e => {
|
|
158
|
-
screenshareReference.current.play();
|
|
159
|
-
};
|
|
157
|
+
screenshareReference.current = stream;
|
|
160
158
|
|
|
161
159
|
track.onended = e => {
|
|
162
160
|
setScreensharePermission(false);
|
|
163
|
-
screenshareReference.current
|
|
161
|
+
screenshareReference.current = null;
|
|
164
162
|
};
|
|
165
163
|
} else {
|
|
164
|
+
track.stop();
|
|
166
165
|
screenshareReference.current = null;
|
|
167
166
|
setScreensharePermission(false);
|
|
168
167
|
}
|
package/package.json
CHANGED
|
@@ -1,33 +0,0 @@
|
|
|
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;
|