@newtonschool/react_proctoring_library 0.0.13 → 0.0.14
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 +55 -18
- package/dist/components/activity-tracker/index.js +12 -2
- package/dist/components/permissions/index.js +4 -1
- package/dist/components/permissions/permission-body.js +7 -2
- package/dist/constants/text.js +3 -1
- package/dist/index.js +1 -9
- package/dist/utils/breachUtils.js +20 -26
- package/dist/utils/index.js +0 -26
- package/dist/utils/webcamMicrophoneUtils.js +50 -2
- package/package.json +1 -1
|
@@ -21,6 +21,8 @@ var _permissions = require("./permissions");
|
|
|
21
21
|
|
|
22
22
|
var _useWebcamData = _interopRequireDefault(require("../hooks/useWebcamData"));
|
|
23
23
|
|
|
24
|
+
var _breachUtils = require("../utils/breachUtils");
|
|
25
|
+
|
|
24
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
27
|
|
|
26
28
|
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); }
|
|
@@ -33,21 +35,29 @@ const ProctorApp = _ref => {
|
|
|
33
35
|
let {
|
|
34
36
|
proctoringIdentifier,
|
|
35
37
|
children,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
lookedAway: true,
|
|
41
|
-
isWebcamDataReliable: true
|
|
42
|
-
},
|
|
43
|
-
sendData = () => {},
|
|
44
|
-
shouldSendDataOnBreach = false
|
|
38
|
+
config,
|
|
39
|
+
getProctorParamValues = () => {},
|
|
40
|
+
getWebcamSnapshot = () => {},
|
|
41
|
+
getScreengrab = () => {}
|
|
45
42
|
} = _ref;
|
|
46
43
|
const webcamReference = (0, _react.useRef)(null);
|
|
47
44
|
const canvasReference = (0, _react.useRef)(null);
|
|
48
45
|
const statistics = (0, _react.useRef)(_defaults.INITIAL_STATISTICS);
|
|
46
|
+
const {
|
|
47
|
+
proctorParams,
|
|
48
|
+
recurring = false,
|
|
49
|
+
recurringFetchInterval = 0,
|
|
50
|
+
trackScreenshare = false
|
|
51
|
+
} = config; // const {
|
|
52
|
+
// userCount = true,
|
|
53
|
+
// tabSwitch = true,
|
|
54
|
+
// fullscreenExit = true,
|
|
55
|
+
// lookedAway = true,
|
|
56
|
+
// } = proctorParams;
|
|
57
|
+
|
|
49
58
|
const [audioPermission, setAudioPermission] = (0, _react.useState)(false);
|
|
50
59
|
const [videoPermission, setVideoPermission] = (0, _react.useState)(false);
|
|
60
|
+
const [screensharePermission, setScreensharePermission] = (0, _react.useState)(!trackScreenshare);
|
|
51
61
|
const firstFullScreenDone = (0, _react.useRef)(false);
|
|
52
62
|
const {
|
|
53
63
|
isFullscreen,
|
|
@@ -56,9 +66,23 @@ const ProctorApp = _ref => {
|
|
|
56
66
|
} = (0, _hooks.useFullscreenData)(firstFullScreenDone);
|
|
57
67
|
const [userCount, lookedAwayCount, isWebcamDataReliable] = (0, _useWebcamData.default)(webcamReference, canvasReference);
|
|
58
68
|
const tabSwitchCount = (0, _hooks.useTabSwitchCount)(firstFullScreenDone);
|
|
69
|
+
let recurringFetchIntervalRef = (0, _react.useRef)(null);
|
|
59
70
|
(0, _react.useEffect)(() => {
|
|
60
|
-
|
|
61
|
-
|
|
71
|
+
if (recurring) {
|
|
72
|
+
recurringFetchIntervalRef.current = setInterval(() => {
|
|
73
|
+
getProctorParamValues(proctoringIdentifier, statistics.current, false);
|
|
74
|
+
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(webcamReference);
|
|
75
|
+
|
|
76
|
+
if (webcamReference) {
|
|
77
|
+
getWebcamSnapshot(proctoringIdentifier, webcamSnapshot, false);
|
|
78
|
+
}
|
|
79
|
+
}, recurringFetchInterval);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return () => {
|
|
83
|
+
clearInterval(recurringFetchIntervalRef.current);
|
|
84
|
+
};
|
|
85
|
+
}, [proctoringIdentifier, recurring, recurringFetchInterval, getWebcamSnapshot, getProctorParamValues]);
|
|
62
86
|
(0, _react.useEffect)(() => {
|
|
63
87
|
const currentStats = {
|
|
64
88
|
userCount,
|
|
@@ -67,14 +91,23 @@ const ProctorApp = _ref => {
|
|
|
67
91
|
lookedAwayCount,
|
|
68
92
|
isWebcamDataReliable: isWebcamProcessingReliable
|
|
69
93
|
};
|
|
94
|
+
const breachData = (0, _breachUtils.getDataOnBreach)(statistics, currentStats, proctoringIdentifier);
|
|
70
95
|
|
|
71
|
-
if (
|
|
72
|
-
(
|
|
73
|
-
|
|
96
|
+
if (breachData) {
|
|
97
|
+
getProctorParamValues(breachData.proctoringIdentifier, breachData.data, true, breachData.breachedParam);
|
|
98
|
+
|
|
99
|
+
if (breachData.breachedParam === "LOOKED_AWAY_COUNT" || breachData.breachedParam === "USER_COUNT_MAX") {
|
|
100
|
+
const webcamSnapshot = (0, _utils.captureWebcamSnapshot)(webcamReference);
|
|
74
101
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
102
|
+
if (webcamSnapshot) {
|
|
103
|
+
getWebcamSnapshot(breachData.proctoringIdentifier, webcamSnapshot, true, breachData.breachedParam);
|
|
104
|
+
}
|
|
105
|
+
} else {// getScreengrab();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
(0, _utils.updateStatistics)(statistics, currentStats);
|
|
109
|
+
}
|
|
110
|
+
}, [userCount, tabSwitchCount, fullScreenExitCount, lookedAwayCount, isWebcamDataReliable, proctoringIdentifier, getProctorParamValues, getWebcamSnapshot]);
|
|
78
111
|
|
|
79
112
|
if (proctoringIdentifier === undefined) {
|
|
80
113
|
// todo
|
|
@@ -85,12 +118,16 @@ const ProctorApp = _ref => {
|
|
|
85
118
|
isFullscreen: isFullscreen,
|
|
86
119
|
audioPermisison: audioPermission,
|
|
87
120
|
videoPermission: videoPermission,
|
|
121
|
+
screensharePermission: screensharePermission,
|
|
122
|
+
trackScreenshare: trackScreenshare,
|
|
88
123
|
setFullscreen: setFullscreen
|
|
89
124
|
}), /*#__PURE__*/_react.default.createElement(_.ActivityTracker, {
|
|
90
125
|
setAudioPermission: setAudioPermission,
|
|
91
126
|
setVideoPermission: setVideoPermission,
|
|
92
127
|
webcamReference: webcamReference,
|
|
93
|
-
canvasReference: canvasReference
|
|
128
|
+
canvasReference: canvasReference,
|
|
129
|
+
trackScreenshare: trackScreenshare,
|
|
130
|
+
setScreensharePermission: setScreensharePermission
|
|
94
131
|
}), isFullscreen && audioPermission && videoPermission && children);
|
|
95
132
|
};
|
|
96
133
|
|
|
@@ -34,12 +34,20 @@ const ActivityTracker = _ref => {
|
|
|
34
34
|
webcamReference,
|
|
35
35
|
canvasReference,
|
|
36
36
|
setAudioPermission,
|
|
37
|
-
setVideoPermission
|
|
37
|
+
setVideoPermission,
|
|
38
|
+
trackScreenshare,
|
|
39
|
+
setScreensharePermission
|
|
38
40
|
} = _ref;
|
|
41
|
+
const videoReference = (0, _react.useRef)(null);
|
|
39
42
|
(0, _react.useEffect)(() => {
|
|
40
43
|
if (isChrome) {
|
|
41
44
|
(0, _webcamMicrophoneUtils.updateVideoPermissions)(setVideoPermission);
|
|
42
45
|
(0, _webcamMicrophoneUtils.updateAudioPermissions)(setAudioPermission);
|
|
46
|
+
|
|
47
|
+
if (trackScreenshare) {
|
|
48
|
+
(0, _webcamMicrophoneUtils.updateScreensharePermission)(setScreensharePermission, videoReference);
|
|
49
|
+
}
|
|
50
|
+
|
|
43
51
|
(0, _webcamMicrophoneUtils.getVideoPermissionQuery)().then(status => {
|
|
44
52
|
status.onchange = evt => {
|
|
45
53
|
(0, _webcamMicrophoneUtils.updateVideoPermissions)(setVideoPermission);
|
|
@@ -55,7 +63,7 @@ const ActivityTracker = _ref => {
|
|
|
55
63
|
(0, _webcamMicrophoneUtils.updateAudioPermissions)("Audio Permission", err);
|
|
56
64
|
});
|
|
57
65
|
}
|
|
58
|
-
}, [setVideoPermission, setAudioPermission]);
|
|
66
|
+
}, [setVideoPermission, setAudioPermission, setScreensharePermission, trackScreenshare]);
|
|
59
67
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactWebcam.default, {
|
|
60
68
|
audio: true,
|
|
61
69
|
muted: true,
|
|
@@ -138,6 +146,8 @@ const ActivityTracker = _ref => {
|
|
|
138
146
|
}), /*#__PURE__*/_react.default.createElement("canvas", {
|
|
139
147
|
ref: canvasReference,
|
|
140
148
|
className: "captured-video-canvas"
|
|
149
|
+
}), /*#__PURE__*/_react.default.createElement("video", {
|
|
150
|
+
src: videoReference.current
|
|
141
151
|
}));
|
|
142
152
|
};
|
|
143
153
|
|
|
@@ -30,6 +30,8 @@ const Permission = _ref => {
|
|
|
30
30
|
isFullscreen,
|
|
31
31
|
audioPermisison,
|
|
32
32
|
videoPermission,
|
|
33
|
+
screensharePermission,
|
|
34
|
+
trackScreenshare,
|
|
33
35
|
setFullscreen
|
|
34
36
|
} = _ref;
|
|
35
37
|
const showPermissionModal = !isFullscreen || !audioPermisison || !videoPermission;
|
|
@@ -58,7 +60,8 @@ const Permission = _ref => {
|
|
|
58
60
|
}), text.VIDEO_UNSUPPORTED_IN_BROWSER)), /*#__PURE__*/_react.default.createElement(_permissionBody.PermissionBody, {
|
|
59
61
|
showFullscreenText: !isFullscreen,
|
|
60
62
|
showAudioPermissionText: !audioPermisison,
|
|
61
|
-
showVideoPermissionText: !videoPermission
|
|
63
|
+
showVideoPermissionText: !videoPermission,
|
|
64
|
+
showScreensharePermission: !screensharePermission && trackScreenshare
|
|
62
65
|
}))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Modal.Footer, null, !isFullscreen && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
|
|
63
66
|
variant: "primary",
|
|
64
67
|
onClick: () => {
|
|
@@ -25,11 +25,16 @@ const PermissionBody = _ref => {
|
|
|
25
25
|
let {
|
|
26
26
|
showFullscreenText,
|
|
27
27
|
showAudioPermissionText,
|
|
28
|
-
showVideoPermissionText
|
|
28
|
+
showVideoPermissionText,
|
|
29
|
+
showScreensharePermission
|
|
29
30
|
} = _ref;
|
|
30
31
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
31
32
|
className: "mb-2"
|
|
32
|
-
}, text.PERMISSION_GENERIC),
|
|
33
|
+
}, text.PERMISSION_GENERIC), showScreensharePermission && /*#__PURE__*/_react.default.createElement("div", {
|
|
34
|
+
className: "mb-2"
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
36
|
+
className: "pr-2 font-weight-bold"
|
|
37
|
+
}, "Screen Share:"), text.PERMISSION_SCREENSHARE), showAudioPermissionText && showVideoPermissionText ? /*#__PURE__*/_react.default.createElement("div", {
|
|
33
38
|
className: "mb-2"
|
|
34
39
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
35
40
|
className: "pr-2 font-weight-bold"
|
package/dist/constants/text.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WATCHING_SCREEN = exports.VIDEO_UNSUPPORTED_IN_BROWSER = exports.USER_COUNT_LABEL = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_HEADING = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_DESC = exports.REQUEST_PERMISSION = exports.PERMISSION_VIDEO = exports.PERMISSION_TITLE = exports.PERMISSION_GENERIC = exports.PERMISSION_FULLSCREEN = exports.PERMISSION_AUDIO_VIDEO = exports.PERMISSION_AUDIO = exports.NO_CAMERA_AVAILABLE = exports.NO_AUDIO_DEVICE_AVAILABLE = exports.NOT_WATCHING_SCREEN = exports.MESSAGE = exports.FULLSCREEN_ERROR_MESSAGE = exports.DENY_FULLSCREEN = exports.CAMERA_UNAVAILABLE_INSECURE_CONN = exports.BROWSER_BLOCKED_PERMISSION_RESOLVED_RECHECK = exports.BROWSER_BLOCKED_PERMISSION_NEXT_STEP = exports.BROWSER_BLOCKED_PERMISSION_DIRECTION = exports.BROWSER_BLOCKED_PERMISSION_DIALOG = exports.BROWSER_BLOCKED_PERMISSION = exports.ALLOW_FULLSCREEN = void 0;
|
|
6
|
+
exports.WATCHING_SCREEN = exports.VIDEO_UNSUPPORTED_IN_BROWSER = exports.USER_COUNT_LABEL = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_HEADING = exports.REQUEST_VIDEO_AUDIO_PERMISSIONS_DESC = exports.REQUEST_PERMISSION = exports.PERMISSION_VIDEO = exports.PERMISSION_TITLE = exports.PERMISSION_SCREENSHARE = exports.PERMISSION_GENERIC = exports.PERMISSION_FULLSCREEN = exports.PERMISSION_AUDIO_VIDEO = exports.PERMISSION_AUDIO = exports.NO_CAMERA_AVAILABLE = exports.NO_AUDIO_DEVICE_AVAILABLE = exports.NOT_WATCHING_SCREEN = exports.MESSAGE = exports.FULLSCREEN_ERROR_MESSAGE = exports.DENY_FULLSCREEN = exports.CAMERA_UNAVAILABLE_INSECURE_CONN = exports.BROWSER_BLOCKED_PERMISSION_RESOLVED_RECHECK = exports.BROWSER_BLOCKED_PERMISSION_NEXT_STEP = exports.BROWSER_BLOCKED_PERMISSION_DIRECTION = exports.BROWSER_BLOCKED_PERMISSION_DIALOG = exports.BROWSER_BLOCKED_PERMISSION = exports.ALLOW_FULLSCREEN = void 0;
|
|
7
7
|
const WATCHING_SCREEN = "You are watching the screen";
|
|
8
8
|
exports.WATCHING_SCREEN = WATCHING_SCREEN;
|
|
9
9
|
const NOT_WATCHING_SCREEN = "You are not watching the screen";
|
|
@@ -48,6 +48,8 @@ const PERMISSION_GENERIC = "This screen requires following permissions for conti
|
|
|
48
48
|
exports.PERMISSION_GENERIC = PERMISSION_GENERIC;
|
|
49
49
|
const PERMISSION_FULLSCREEN = "Please allow us to switch your screen to fullscreen mode.";
|
|
50
50
|
exports.PERMISSION_FULLSCREEN = PERMISSION_FULLSCREEN;
|
|
51
|
+
const PERMISSION_SCREENSHARE = "Please choose to share the entire screen out of all the screen share options.";
|
|
52
|
+
exports.PERMISSION_SCREENSHARE = PERMISSION_SCREENSHARE;
|
|
51
53
|
const PERMISSION_AUDIO_VIDEO = "Your browser or system settings have disallowed Microphone and Camera permissions. Please permit this website to access microphone and camera. Refresh after you've given the permission to access the screen";
|
|
52
54
|
exports.PERMISSION_AUDIO_VIDEO = PERMISSION_AUDIO_VIDEO;
|
|
53
55
|
const PERMISSION_VIDEO = "Your browser or system settings have disallowed Camera permissions. Please permit this website to access the camera. Refresh after you've given the permission to access the screen";
|
package/dist/index.js
CHANGED
|
@@ -9,13 +9,5 @@ Object.defineProperty(exports, "ProctorApp", {
|
|
|
9
9
|
return _components.ProctorApp;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "getStatistics", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function get() {
|
|
15
|
-
return _utils.getStatistics;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
var _components = require("./components");
|
|
20
12
|
|
|
21
|
-
var
|
|
13
|
+
var _components = require("./components");
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
var _ = require(".");
|
|
6
|
+
exports.getDataOnBreach = void 0;
|
|
9
7
|
|
|
10
8
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
11
9
|
|
|
@@ -13,7 +11,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
13
11
|
|
|
14
12
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
13
|
|
|
16
|
-
const
|
|
14
|
+
const getDataOnBreach = (statistics, currentData, proctoringIdentifier) => {
|
|
17
15
|
const {
|
|
18
16
|
userCount,
|
|
19
17
|
tabSwitchCount,
|
|
@@ -25,63 +23,59 @@ const sendDataOnBreach = (statistics, currentData, proctoringIdentifier, sendDat
|
|
|
25
23
|
const data = statistics.current;
|
|
26
24
|
|
|
27
25
|
if (data.IS_WEBCAM_DATA_RELIABLE !== isWebcamDataReliable) {
|
|
28
|
-
|
|
26
|
+
return {
|
|
29
27
|
proctoringIdentifier,
|
|
30
|
-
|
|
28
|
+
breachedParam: "IS_WEBCAM_DATA_RELIABLE",
|
|
31
29
|
timestamp,
|
|
32
30
|
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
33
31
|
IS_WEBCAM_DATA_RELIABLE: isWebcamDataReliable
|
|
34
32
|
})
|
|
35
|
-
}
|
|
33
|
+
};
|
|
36
34
|
}
|
|
37
35
|
|
|
38
36
|
if (data.USER_COUNT_MAX < userCount) {
|
|
39
|
-
|
|
40
|
-
sendData({
|
|
37
|
+
return {
|
|
41
38
|
proctoringIdentifier,
|
|
42
|
-
|
|
39
|
+
breachedParam: "USER_COUNT_MAX",
|
|
43
40
|
timestamp,
|
|
44
41
|
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
45
42
|
USER_COUNT_MAX: userCount
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
});
|
|
43
|
+
})
|
|
44
|
+
};
|
|
49
45
|
}
|
|
50
46
|
|
|
51
47
|
if (data.TAB_SWITCH_COUNT !== tabSwitchCount) {
|
|
52
|
-
|
|
48
|
+
return {
|
|
53
49
|
proctoringIdentifier,
|
|
54
|
-
|
|
50
|
+
breachedParam: "TAB_SWITCH_COUNT",
|
|
55
51
|
timestamp,
|
|
56
52
|
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
57
53
|
TAB_SWITCH_COUNT: tabSwitchCount
|
|
58
54
|
})
|
|
59
|
-
}
|
|
55
|
+
};
|
|
60
56
|
}
|
|
61
57
|
|
|
62
58
|
if (data.FULLSCREEN_EXIT_COUNT !== fullScreenExitCount) {
|
|
63
|
-
|
|
59
|
+
return {
|
|
64
60
|
proctoringIdentifier,
|
|
65
|
-
|
|
61
|
+
breachedParam: "FULLSCREEN_EXIT_COUNT",
|
|
66
62
|
timestamp,
|
|
67
63
|
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
68
64
|
FULLSCREEN_EXIT_COUNT: fullScreenExitCount
|
|
69
65
|
})
|
|
70
|
-
}
|
|
66
|
+
};
|
|
71
67
|
}
|
|
72
68
|
|
|
73
69
|
if (data.LOOKED_AWAY_COUNT !== lookedAwayCount) {
|
|
74
|
-
|
|
75
|
-
sendData({
|
|
70
|
+
return {
|
|
76
71
|
proctoringIdentifier,
|
|
77
|
-
|
|
72
|
+
breachedParam: "LOOKED_AWAY_COUNT",
|
|
78
73
|
timestamp,
|
|
79
74
|
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
80
75
|
LOOKED_AWAY_COUNT: lookedAwayCount
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
});
|
|
76
|
+
})
|
|
77
|
+
};
|
|
84
78
|
}
|
|
85
79
|
};
|
|
86
80
|
|
|
87
|
-
exports.
|
|
81
|
+
exports.getDataOnBreach = getDataOnBreach;
|
package/dist/utils/index.js
CHANGED
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "addOrUpdateStatsToLocalStorage", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _localStorageUtils.addOrUpdateStatsToLocalStorage;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
6
|
Object.defineProperty(exports, "captureWebcamSnapshot", {
|
|
13
7
|
enumerable: true,
|
|
14
8
|
get: function get() {
|
|
@@ -45,12 +39,6 @@ Object.defineProperty(exports, "getIsDocumentVisible", {
|
|
|
45
39
|
return _browserUtils.getIsDocumentVisible;
|
|
46
40
|
}
|
|
47
41
|
});
|
|
48
|
-
Object.defineProperty(exports, "getStatistics", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function get() {
|
|
51
|
-
return _localStorageUtils.getStatistics;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
42
|
Object.defineProperty(exports, "getVideoPermission", {
|
|
55
43
|
enumerable: true,
|
|
56
44
|
get: function get() {
|
|
@@ -81,18 +69,6 @@ Object.defineProperty(exports, "isWebcamVideoValid", {
|
|
|
81
69
|
return _webcamMicrophoneUtils.isWebcamVideoValid;
|
|
82
70
|
}
|
|
83
71
|
});
|
|
84
|
-
Object.defineProperty(exports, "removeStatsFromLocalStorage", {
|
|
85
|
-
enumerable: true,
|
|
86
|
-
get: function get() {
|
|
87
|
-
return _localStorageUtils.removeStatsFromLocalStorage;
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
Object.defineProperty(exports, "retrieveStatsFromLocalStorage", {
|
|
91
|
-
enumerable: true,
|
|
92
|
-
get: function get() {
|
|
93
|
-
return _localStorageUtils.retrieveStatsFromLocalStorage;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
72
|
Object.defineProperty(exports, "sendDataOnBreach", {
|
|
97
73
|
enumerable: true,
|
|
98
74
|
get: function get() {
|
|
@@ -106,8 +82,6 @@ Object.defineProperty(exports, "updateStatistics", {
|
|
|
106
82
|
}
|
|
107
83
|
});
|
|
108
84
|
|
|
109
|
-
var _localStorageUtils = require("./localStorageUtils");
|
|
110
|
-
|
|
111
85
|
var _webcamMicrophoneUtils = require("./webcamMicrophoneUtils");
|
|
112
86
|
|
|
113
87
|
var _browserUtils = require("./browserUtils");
|
|
@@ -3,7 +3,21 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.updateVideoPermissions = exports.updateStatistics = exports.updateAudioPermissions = exports.isWebcamVideoValid = exports.getVideoPermissionQuery = exports.getVideoPermission = exports.getGlancePercentage = exports.getAudioVideoPermission = exports.getAudioPermissionQuery = exports.getAudioPermission = exports.captureWebcamSnapshot = void 0;
|
|
6
|
+
exports.updateVideoPermissions = exports.updateStatistics = exports.updateScreensharePermission = exports.updateAudioPermissions = exports.isWebcamVideoValid = exports.getVideoPermissionQuery = exports.getVideoPermission = exports.getGlancePercentage = exports.getAudioVideoPermission = exports.getAudioPermissionQuery = exports.getAudioPermission = exports.captureWebcamSnapshot = void 0;
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/es.string.split.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/es.array-buffer.slice.js");
|
|
13
|
+
|
|
14
|
+
require("core-js/modules/es.typed-array.uint8-array.js");
|
|
15
|
+
|
|
16
|
+
require("core-js/modules/es.typed-array.set.js");
|
|
17
|
+
|
|
18
|
+
require("core-js/modules/es.typed-array.sort.js");
|
|
19
|
+
|
|
20
|
+
require("core-js/modules/es.typed-array.to-locale-string.js");
|
|
7
21
|
|
|
8
22
|
var _ = require(".");
|
|
9
23
|
|
|
@@ -110,6 +124,22 @@ const updateVideoPermissions = setVideoPermission => {
|
|
|
110
124
|
|
|
111
125
|
exports.updateVideoPermissions = updateVideoPermissions;
|
|
112
126
|
|
|
127
|
+
const updateScreensharePermission = (setScreensharePermission, videoReference) => navigator.mediaDevices.getDisplayMedia({
|
|
128
|
+
video: true,
|
|
129
|
+
audio: true
|
|
130
|
+
}).then(stream => {
|
|
131
|
+
if (stream.getTracks()[0].getSettings().displaySurface === "monitor") {
|
|
132
|
+
videoReference.current = stream;
|
|
133
|
+
setScreensharePermission(true);
|
|
134
|
+
} else {
|
|
135
|
+
setScreensharePermission(false);
|
|
136
|
+
}
|
|
137
|
+
}).catch(() => {
|
|
138
|
+
setScreensharePermission(false);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
exports.updateScreensharePermission = updateScreensharePermission;
|
|
142
|
+
|
|
113
143
|
const getVideoPermissionQuery = () => navigator.permissions.query({
|
|
114
144
|
name: "camera"
|
|
115
145
|
});
|
|
@@ -122,8 +152,26 @@ const getAudioPermissionQuery = () => navigator.permissions.query({
|
|
|
122
152
|
|
|
123
153
|
exports.getAudioPermissionQuery = getAudioPermissionQuery;
|
|
124
154
|
|
|
155
|
+
const b64DataURItoBlob = dataURI => {
|
|
156
|
+
const byteString = window.atob(dataURI.split(",")[1]);
|
|
157
|
+
const mimeString = dataURI.split(",")[0].split(":")[1].split(";")[0];
|
|
158
|
+
const u8arr = new Uint8Array(byteString.length);
|
|
159
|
+
|
|
160
|
+
for (let i = 0; i < byteString.length; i += 1) {
|
|
161
|
+
u8arr[i] = byteString.charCodeAt(i);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return new Blob([u8arr], {
|
|
165
|
+
type: mimeString
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
|
|
125
169
|
const captureWebcamSnapshot = webcamReference => {
|
|
126
|
-
|
|
170
|
+
try {
|
|
171
|
+
const b64Snapshot = webcamReference.current.getScreenshot();
|
|
172
|
+
return b64DataURItoBlob(b64Snapshot);
|
|
173
|
+
} catch (_unused) {// pass
|
|
174
|
+
}
|
|
127
175
|
};
|
|
128
176
|
|
|
129
177
|
exports.captureWebcamSnapshot = captureWebcamSnapshot;
|