@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
@@ -1,223 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.updateVideoPermissions = exports.updateStatistics = exports.updateAudioPermissions = exports.setupScreensharePermission = exports.isWebcamVideoValid = exports.getVideoPermissionQuery = exports.getVideoPermission = exports.getGlancePercentage = exports.getAudioVideoPermission = exports.getAudioPermissionQuery = exports.getAudioPermission = exports.captureWebcamSnapshot = exports.captureScreenshot = 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.fill.js");
17
-
18
- require("core-js/modules/es.typed-array.set.js");
19
-
20
- require("core-js/modules/es.typed-array.sort.js");
21
-
22
- require("core-js/modules/es.typed-array.to-locale-string.js");
23
-
24
- require("core-js/modules/es.promise.js");
25
-
26
- var _ = require(".");
27
-
28
- var _html2canvas = _interopRequireDefault(require("html2canvas"));
29
-
30
- var _defaults = require("../constants/defaults");
31
-
32
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
-
34
- const isWebcamVideoValid = webcamReference => webcamReference !== null && webcamReference !== undefined && typeof webcamReference.current !== "undefined" && webcamReference.current !== null && webcamReference.current.video.readyState === 4;
35
-
36
- exports.isWebcamVideoValid = isWebcamVideoValid;
37
-
38
- const updateStatistics = (statistics, currentStats, proctorParams) => {
39
- const {
40
- isTabSwitched,
41
- isFullscreen,
42
- lookedAwayCount,
43
- userCount,
44
- isWebcamDataReliable
45
- } = currentStats;
46
-
47
- if (proctorParams.tabSwitch) {
48
- statistics.current[_defaults.STATS_PARAMS.isTabSwitched] = isTabSwitched;
49
- }
50
-
51
- if (proctorParams.fullscreenExit) {
52
- statistics.current[_defaults.STATS_PARAMS.isFullscreen] = isFullscreen;
53
- }
54
-
55
- if (proctorParams.lookedAway) {
56
- statistics.current[_defaults.STATS_PARAMS.lookedAwayCount] = lookedAwayCount;
57
- }
58
-
59
- if (proctorParams.people) {
60
- statistics.current[_defaults.STATS_PARAMS.userCountMax] = Math.max(userCount, statistics.current[_defaults.STATS_PARAMS.userCountMax]);
61
- }
62
-
63
- statistics.current.IS_WEBCAM_DATA_RELIABLE = isWebcamDataReliable;
64
- };
65
-
66
- exports.updateStatistics = updateStatistics;
67
-
68
- const getGlancePercentage = partSegmentation => {
69
- if (!partSegmentation || !(partSegmentation instanceof Object) || !(0, _.isArrayValid)(partSegmentation.allPoses)) {
70
- return 0.0;
71
- }
72
-
73
- const allPoses = partSegmentation.allPoses;
74
- let totalScoreLeftEye = 0.0,
75
- totalScoreRightEye = 0.0,
76
- totalScoreNose = 0.0,
77
- totalScoreLeftEar = 0.0,
78
- totalScoreRightEar = 0.0;
79
- let noseIndex = 0,
80
- leftEyeIndex = 1,
81
- rightEyeIndex = 2,
82
- leftEarIndex = 3,
83
- rightEarIndex = 4;
84
- allPoses.forEach(poseArray => {
85
- let keypointsArray = poseArray.keypoints;
86
- totalScoreNose += keypointsArray[noseIndex].score;
87
- totalScoreLeftEye += keypointsArray[leftEyeIndex].score;
88
- totalScoreRightEye += keypointsArray[rightEyeIndex].score;
89
- totalScoreLeftEar += keypointsArray[leftEarIndex].score;
90
- totalScoreRightEar += keypointsArray[rightEarIndex].score;
91
- });
92
- const avgScoreLeftEye = totalScoreLeftEye / allPoses.length,
93
- avgScoreRightEye = totalScoreRightEye / allPoses.length,
94
- avgScoreNose = totalScoreNose / allPoses.length,
95
- avgScoreLeftEar = totalScoreLeftEar / allPoses.length,
96
- avgScoreRightEar = totalScoreRightEar / allPoses.length;
97
- const avgPercentage = 100 * (avgScoreLeftEye + avgScoreRightEye + avgScoreNose + avgScoreLeftEar + avgScoreRightEar) / 5;
98
- return Math.ceil(avgPercentage);
99
- };
100
-
101
- exports.getGlancePercentage = getGlancePercentage;
102
-
103
- const getVideoPermission = function getVideoPermission(stream) {
104
- let exludeTrackId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
105
- return stream.getVideoTracks().filter(track => track.enabled && track.label && track.id !== exludeTrackId).length > 0;
106
- };
107
-
108
- exports.getVideoPermission = getVideoPermission;
109
-
110
- const getAudioPermission = function getAudioPermission(stream) {
111
- let exludeTrackId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
112
- return stream.getAudioTracks().filter(track => track.enabled && track.label && !track.muted && track.id !== exludeTrackId).length > 0;
113
- };
114
-
115
- exports.getAudioPermission = getAudioPermission;
116
-
117
- const getAudioVideoPermission = stream => {
118
- return {
119
- audio: getAudioPermission(stream),
120
- video: getVideoPermission(stream)
121
- };
122
- };
123
-
124
- exports.getAudioVideoPermission = getAudioVideoPermission;
125
-
126
- const updateAudioPermissions = setAudioPermission => {
127
- navigator.mediaDevices.getUserMedia({
128
- audio: true
129
- }).then(() => {
130
- setAudioPermission(true);
131
- }).catch(err => {
132
- setAudioPermission(false);
133
- });
134
- };
135
-
136
- exports.updateAudioPermissions = updateAudioPermissions;
137
-
138
- const updateVideoPermissions = setVideoPermission => {
139
- navigator.mediaDevices.getUserMedia({
140
- video: true
141
- }).then(() => {
142
- setVideoPermission(true);
143
- }).catch(err => {
144
- setVideoPermission(false);
145
- });
146
- };
147
-
148
- exports.updateVideoPermissions = updateVideoPermissions;
149
-
150
- const setupScreensharePermission = (setScreensharePermission, screenshareReference) => navigator.mediaDevices.getDisplayMedia({
151
- video: true
152
- }).then(stream => {
153
- const track = stream.getTracks()[0];
154
-
155
- if (track.getSettings().displaySurface === "monitor") {
156
- setScreensharePermission(true);
157
- screenshareReference.current.srcObject = stream;
158
-
159
- screenshareReference.current.onloadedmetadata = e => {
160
- screenshareReference.current.play();
161
- };
162
-
163
- track.onended = e => {
164
- setScreensharePermission(false);
165
- screenshareReference.current.srcObject = null;
166
- };
167
- } else {
168
- screenshareReference.current = null;
169
- setScreensharePermission(false);
170
- }
171
- }).catch(e => {
172
- screenshareReference.current = null;
173
- setScreensharePermission(false);
174
- });
175
-
176
- exports.setupScreensharePermission = setupScreensharePermission;
177
-
178
- const getVideoPermissionQuery = () => navigator.permissions.query({
179
- name: "camera"
180
- });
181
-
182
- exports.getVideoPermissionQuery = getVideoPermissionQuery;
183
-
184
- const getAudioPermissionQuery = () => navigator.permissions.query({
185
- name: "microphone"
186
- });
187
-
188
- exports.getAudioPermissionQuery = getAudioPermissionQuery;
189
-
190
- const b64DataURItoBlob = dataURI => {
191
- const byteString = window.atob(dataURI.split(",")[1]);
192
- const mimeString = dataURI.split(",")[0].split(":")[1].split(";")[0];
193
- const u8arr = new Uint8Array(byteString.length);
194
-
195
- for (let i = 0; i < byteString.length; i += 1) {
196
- u8arr[i] = byteString.charCodeAt(i);
197
- }
198
-
199
- return new Blob([u8arr], {
200
- type: mimeString
201
- });
202
- };
203
-
204
- const captureWebcamSnapshot = webcamReference => {
205
- try {
206
- const b64Snapshot = webcamReference.current.getScreenshot();
207
- return b64DataURItoBlob(b64Snapshot);
208
- } catch (e) {// pass
209
- }
210
- };
211
-
212
- exports.captureWebcamSnapshot = captureWebcamSnapshot;
213
-
214
- const captureScreenshot = async () => {
215
- try {
216
- const canvas = await (0, _html2canvas.default)(document.querySelector("#ss-ref"));
217
- const b64Snapshot = canvas.toDataURL("image/jpeg");
218
- return b64DataURItoBlob(b64Snapshot);
219
- } catch (e) {// pass
220
- }
221
- };
222
-
223
- exports.captureScreenshot = captureScreenshot;