@bigbinary/neeto-media-recorder 2.6.14 → 2.6.16-beta.1

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/README.md CHANGED
@@ -41,8 +41,8 @@ This package exports four different sets of functions and components.
41
41
  - `appName`: This prop is used to set the application name which will be used
42
42
  in the permission denied messages. By default it will be set to
43
43
  `globalProps.appName`
44
- - `mimeType`: This prop is used to set the mime type of the recording. By default
45
- it will be set to `video/webm;codecs=h264`.
44
+ - `mimeType`: This prop is used to set the mime type of the recording. By
45
+ default it will be set to `video/webm;codecs=h264`.
46
46
 
47
47
  ### Utilities
48
48
 
@@ -113,6 +113,7 @@ const SCREEN_RECORDER_EVENT = {
113
113
  onDiscardDuringCountdown: "onDiscardDuringCountdown",
114
114
  onRestart: "onRestart",
115
115
  onReUpload: "onReUpload",
116
+ onReUploadFromDisk: "onReUploadFromDisk",
116
117
  onPause: "onPause",
117
118
  onResume: "onResume",
118
119
  };
@@ -219,6 +220,10 @@ import {
219
220
  the audio device. Ref:
220
221
  https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints
221
222
 
223
+ - `videoStream` A write-only property which can be set by the client to set a
224
+ video stream, once set the screenRecorder will not acquire a new video
225
+ stream or request for permission to share the screen.
226
+
222
227
  - #### getMultipartS3Uploader
223
228
 
224
229
  It returns an instance of `MultipartS3Uploader` which handles the upload of
package/constants.js CHANGED
@@ -69,8 +69,12 @@ var SCREEN_RECORDER_EVENT = {
69
69
  onDiscardDuringCountdown: "onDiscardDuringCountdown",
70
70
  onRestart: "onRestart",
71
71
  onReUpload: "onReUpload",
72
+ onReUploadFromDisk: "onReUploadFromDisk",
72
73
  onPause: "onPause",
73
- onResume: "onResume"
74
+ onResume: "onResume",
75
+ onCountdownStart: "onCountdownStart",
76
+ onCountdown: "onCountDown",
77
+ onCountdownEnd: "onCountdownEnd"
74
78
  };
75
79
  var TOTAL_RETRIES = 15;
76
80
  var INITIAL_RETRY_DELAY = 4000;
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["node_modules/@babel/runtime/helpers/esm/typeof.js","src/constants.js"],"sourcesContent":["export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import platform from \"platform\";\nimport { isNotNil } from \"ramda\";\n\n// https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList\nexport const RETRYABLE_ERRORS = [500, 503];\n\nexport const ONE_SECOND_IN_MILLISECONDS = 1000;\nexport const HALF_A_SECOND_IN_MILLISECONDS = 500;\nexport const TWO_HUNDRED_MILLISECONDS = 200;\n\nexport const ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;\nexport const ONE_HOUR_IN_MILLISECONDS = 60 * ONE_MINUTE_IN_MILLISECONDS;\n\nexport const ONE_SECOND = 1;\n\nexport const UPLOAD_EVENT = {\n onComplete: \"onComplete\",\n onError: \"onError\",\n onProgress: \"onProgress\",\n};\n\nexport const UPLOAD_STATUS = {\n uploading: \"uploading\",\n completed: \"completed\",\n aborting: \"aborting\",\n insufficient_data: \"insufficient_data\",\n error: \"error\",\n};\n\nexport const SCREEN_RECORDER_STATUS = {\n media_aborted: \"media_aborted\",\n permission_denied: \"permission_denied\",\n no_specified_media_found: \"no_specified_media_found\",\n media_in_use: \"media_in_use\",\n invalid_media_constraints: \"invalid_media_constraints\",\n no_chrome_flags_set: \"no_chrome_flags_set\",\n recorder_error: \"recorder_error\",\n idle: \"idle\",\n acquiring_media: \"acquiring_media\",\n media_acquired: \"media_acquired\",\n restarting: \"restarting\",\n recording: \"recording\",\n stopping: \"stopping\",\n stopped: \"stopped\",\n paused: \"paused\",\n};\n\nexport const SCREEN_RECORDER_ERROR = {\n MicPermissionDenied: \"mic_permission_denied\",\n AbortError: \"media_aborted\",\n NotAllowedError: \"permission_denied\",\n NotFoundError: \"no_specified_media_found\",\n NotReadableError: \"media_in_use\",\n OverconstrainedError: \"invalid_media_constraints\",\n TypeError: \"no_chrome_flags_set\",\n None: \"\",\n NoRecorder: \"recorder_error\",\n UnSupportedBrowser: \"unsupported_browser\",\n FailedToStart: \"failed_to_start\",\n};\n\nexport const SCREEN_RECORDER_EVENT = {\n onStart: \"onStart\",\n onStop: \"onStop\",\n onDiscard: \"onDiscard\",\n onDataAvailable: \"onDataAvailable\",\n onDiscardDuringCountdown: \"onDiscardDuringCountdown\",\n onRestart: \"onRestart\",\n onReUpload: \"onReUpload\",\n onPause: \"onPause\",\n onResume: \"onResume\",\n};\n\nexport const TOTAL_RETRIES = 15;\nexport const INITIAL_RETRY_DELAY = 4000;\nexport const MAX_RETRY_DELAY = 16000;\n\nexport const DEFAULT_RETRY_CONFIG = {\n retries: TOTAL_RETRIES,\n retryDelay: INITIAL_RETRY_DELAY,\n retryableStatuses: [],\n};\n\n// No need to localize this since it will only be used in the code\n// eslint-disable-next-line @bigbinary/neeto/hard-coded-strings-should-be-localized\nexport const NETWORK_ERROR = \"Network Error\";\nexport const TIMEOUT_ERROR = \"ECONNABORTED\";\n\nexport const HAS_CHROME_NAMESPACE = typeof chrome === \"object\";\n\nexport const IS_EXTENSION = HAS_CHROME_NAMESPACE && isNotNil(chrome.extension);\n\nexport const IS_SAFARI = platform.name === \"Safari\";\n\nexport const IS_SAFARI_EXTENSION = IS_SAFARI && IS_EXTENSION;\n\nexport const PERMISSIONS_HELP_DOC =\n \"https://neetorecordhelp.neetokb.com/p/a-10efcfd7\";\n\nexport const MIME_TYPE = {\n mp4: \"video/mp4\",\n webmH264: \"video/webm;codecs=h264\",\n};\n\nexport const START_RECORDING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3\";\n\nexport const STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-end-sound.mp3\";\n\nexport const RECORDING_LIMIT_REACHED_WARNING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-warning-sound.mp3\";\n\nexport const RECORDING_TIME_LIMIT_FREE_PLAN = 15 * ONE_MINUTE_IN_MILLISECONDS; // 15 minutes\nexport const RECORDING_TIME_LIMIT_PRO_PLAN = 2 * ONE_HOUR_IN_MILLISECONDS; // 2 hours\n"],"names":["RETRYABLE_ERRORS","ONE_SECOND_IN_MILLISECONDS","HALF_A_SECOND_IN_MILLISECONDS","TWO_HUNDRED_MILLISECONDS","ONE_MINUTE_IN_MILLISECONDS","ONE_HOUR_IN_MILLISECONDS","ONE_SECOND","UPLOAD_EVENT","onComplete","onError","onProgress","UPLOAD_STATUS","uploading","completed","aborting","insufficient_data","error","SCREEN_RECORDER_STATUS","media_aborted","permission_denied","no_specified_media_found","media_in_use","invalid_media_constraints","no_chrome_flags_set","recorder_error","idle","acquiring_media","media_acquired","restarting","recording","stopping","stopped","paused","SCREEN_RECORDER_ERROR","MicPermissionDenied","AbortError","NotAllowedError","NotFoundError","NotReadableError","OverconstrainedError","TypeError","None","NoRecorder","UnSupportedBrowser","FailedToStart","SCREEN_RECORDER_EVENT","onStart","onStop","onDiscard","onDataAvailable","onDiscardDuringCountdown","onRestart","onReUpload","onPause","onResume","TOTAL_RETRIES","INITIAL_RETRY_DELAY","MAX_RETRY_DELAY","DEFAULT_RETRY_CONFIG","retries","retryDelay","retryableStatuses","NETWORK_ERROR","TIMEOUT_ERROR","HAS_CHROME_NAMESPACE","chrome","_typeof","IS_EXTENSION","isNotNil","extension","IS_SAFARI","platform","name","IS_SAFARI_EXTENSION","PERMISSIONS_HELP_DOC","MIME_TYPE","mp4","webmH264","START_RECORDING_SOUND","STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND","RECORDING_LIMIT_REACHED_WARNING_SOUND","RECORDING_TIME_LIMIT_FREE_PLAN","RECORDING_TIME_LIMIT_PRO_PLAN"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"constants.js","sources":["node_modules/@babel/runtime/helpers/esm/typeof.js","src/constants.js"],"sourcesContent":["export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import platform from \"platform\";\nimport { isNotNil } from \"ramda\";\n\n// https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList\nexport const RETRYABLE_ERRORS = [500, 503];\n\nexport const ONE_SECOND_IN_MILLISECONDS = 1000;\nexport const HALF_A_SECOND_IN_MILLISECONDS = 500;\nexport const TWO_HUNDRED_MILLISECONDS = 200;\n\nexport const ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;\nexport const ONE_HOUR_IN_MILLISECONDS = 60 * ONE_MINUTE_IN_MILLISECONDS;\n\nexport const ONE_SECOND = 1;\n\nexport const UPLOAD_EVENT = {\n onComplete: \"onComplete\",\n onError: \"onError\",\n onProgress: \"onProgress\",\n};\n\nexport const UPLOAD_STATUS = {\n uploading: \"uploading\",\n completed: \"completed\",\n aborting: \"aborting\",\n insufficient_data: \"insufficient_data\",\n error: \"error\",\n};\n\nexport const SCREEN_RECORDER_STATUS = {\n media_aborted: \"media_aborted\",\n permission_denied: \"permission_denied\",\n no_specified_media_found: \"no_specified_media_found\",\n media_in_use: \"media_in_use\",\n invalid_media_constraints: \"invalid_media_constraints\",\n no_chrome_flags_set: \"no_chrome_flags_set\",\n recorder_error: \"recorder_error\",\n idle: \"idle\",\n acquiring_media: \"acquiring_media\",\n media_acquired: \"media_acquired\",\n restarting: \"restarting\",\n recording: \"recording\",\n stopping: \"stopping\",\n stopped: \"stopped\",\n paused: \"paused\",\n};\n\nexport const SCREEN_RECORDER_ERROR = {\n MicPermissionDenied: \"mic_permission_denied\",\n AbortError: \"media_aborted\",\n NotAllowedError: \"permission_denied\",\n NotFoundError: \"no_specified_media_found\",\n NotReadableError: \"media_in_use\",\n OverconstrainedError: \"invalid_media_constraints\",\n TypeError: \"no_chrome_flags_set\",\n None: \"\",\n NoRecorder: \"recorder_error\",\n UnSupportedBrowser: \"unsupported_browser\",\n FailedToStart: \"failed_to_start\",\n};\n\nexport const SCREEN_RECORDER_EVENT = {\n onStart: \"onStart\",\n onStop: \"onStop\",\n onDiscard: \"onDiscard\",\n onDataAvailable: \"onDataAvailable\",\n onDiscardDuringCountdown: \"onDiscardDuringCountdown\",\n onRestart: \"onRestart\",\n onReUpload: \"onReUpload\",\n onReUploadFromDisk: \"onReUploadFromDisk\",\n onPause: \"onPause\",\n onResume: \"onResume\",\n onCountdownStart: \"onCountdownStart\",\n onCountdown: \"onCountDown\",\n onCountdownEnd: \"onCountdownEnd\",\n};\n\nexport const TOTAL_RETRIES = 15;\nexport const INITIAL_RETRY_DELAY = 4000;\nexport const MAX_RETRY_DELAY = 16000;\n\nexport const DEFAULT_RETRY_CONFIG = {\n retries: TOTAL_RETRIES,\n retryDelay: INITIAL_RETRY_DELAY,\n retryableStatuses: [],\n};\n\n// No need to localize this since it will only be used in the code\n// eslint-disable-next-line @bigbinary/neeto/hard-coded-strings-should-be-localized\nexport const NETWORK_ERROR = \"Network Error\";\nexport const TIMEOUT_ERROR = \"ECONNABORTED\";\n\nexport const HAS_CHROME_NAMESPACE = typeof chrome === \"object\";\n\nexport const IS_EXTENSION = HAS_CHROME_NAMESPACE && isNotNil(chrome.extension);\n\nexport const IS_SAFARI = platform.name === \"Safari\";\n\nexport const IS_SAFARI_EXTENSION = IS_SAFARI && IS_EXTENSION;\n\nexport const PERMISSIONS_HELP_DOC =\n \"https://neetorecordhelp.neetokb.com/p/a-10efcfd7\";\n\nexport const MIME_TYPE = {\n mp4: \"video/mp4\",\n webmH264: \"video/webm;codecs=h264\",\n};\n\nexport const START_RECORDING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-start-sound-2.mp3\";\n\nexport const STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-end-sound.mp3\";\n\nexport const RECORDING_LIMIT_REACHED_WARNING_SOUND =\n \"https://neeto-record-static-assets.s3.amazonaws.com/recording-warning-sound.mp3\";\n\nexport const RECORDING_TIME_LIMIT_FREE_PLAN = 15 * ONE_MINUTE_IN_MILLISECONDS; // 15 minutes\nexport const RECORDING_TIME_LIMIT_PRO_PLAN = 2 * ONE_HOUR_IN_MILLISECONDS; // 2 hours\n"],"names":["RETRYABLE_ERRORS","ONE_SECOND_IN_MILLISECONDS","HALF_A_SECOND_IN_MILLISECONDS","TWO_HUNDRED_MILLISECONDS","ONE_MINUTE_IN_MILLISECONDS","ONE_HOUR_IN_MILLISECONDS","ONE_SECOND","UPLOAD_EVENT","onComplete","onError","onProgress","UPLOAD_STATUS","uploading","completed","aborting","insufficient_data","error","SCREEN_RECORDER_STATUS","media_aborted","permission_denied","no_specified_media_found","media_in_use","invalid_media_constraints","no_chrome_flags_set","recorder_error","idle","acquiring_media","media_acquired","restarting","recording","stopping","stopped","paused","SCREEN_RECORDER_ERROR","MicPermissionDenied","AbortError","NotAllowedError","NotFoundError","NotReadableError","OverconstrainedError","TypeError","None","NoRecorder","UnSupportedBrowser","FailedToStart","SCREEN_RECORDER_EVENT","onStart","onStop","onDiscard","onDataAvailable","onDiscardDuringCountdown","onRestart","onReUpload","onReUploadFromDisk","onPause","onResume","onCountdownStart","onCountdown","onCountdownEnd","TOTAL_RETRIES","INITIAL_RETRY_DELAY","MAX_RETRY_DELAY","DEFAULT_RETRY_CONFIG","retries","retryDelay","retryableStatuses","NETWORK_ERROR","TIMEOUT_ERROR","HAS_CHROME_NAMESPACE","chrome","_typeof","IS_EXTENSION","isNotNil","extension","IS_SAFARI","platform","name","IS_SAFARI_EXTENSION","PERMISSIONS_HELP_DOC","MIME_TYPE","mp4","webmH264","START_RECORDING_SOUND","STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND","RECORDING_LIMIT_REACHED_WARNING_SOUND","RECORDING_TIME_LIMIT_FREE_PLAN","RECORDING_TIME_LIMIT_PRO_PLAN"],"mappings":"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","x_google_ignoreList":[0]}
package/core.js CHANGED
@@ -1086,6 +1086,20 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1086
1086
  _classPrivateFieldSet(_this, _unUploadedChunks, []);
1087
1087
  }
1088
1088
  });
1089
+ _defineProperty(this, "completeUploadNotifyServer", function (parts, sessionLogs) {
1090
+ return completeUploadApi.create({
1091
+ recordingId: _classPrivateFieldGet(_this, _recordingId),
1092
+ payload: {
1093
+ parts: parts,
1094
+ uploadId: _classPrivateFieldGet(_this, _uploadId),
1095
+ isMp4: isMp4Supported(_classPrivateFieldGet(_this, _mimeType$1)),
1096
+ logs: sessionLogs
1097
+ },
1098
+ config: {
1099
+ signal: _classPrivateFieldGet(_this, _abortController).signal
1100
+ }
1101
+ });
1102
+ });
1089
1103
  _defineProperty(this, "completeUpload", /*#__PURE__*/function () {
1090
1104
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(sessionLogs) {
1091
1105
  var uploadChunkToS3Promise, resolvedS3PartUploadPromises, parts;
@@ -1151,18 +1165,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1151
1165
  return Number(a.partNumber) - Number(b.partNumber);
1152
1166
  });
1153
1167
  _classPrivateFieldGet(_this, _logger$1).info("completeUpload -> uploaded parts: ", parts);
1154
- _classPrivateFieldSet(_this, _completeUploadPromise, completeUploadApi.create({
1155
- recordingId: _classPrivateFieldGet(_this, _recordingId),
1156
- payload: {
1157
- parts: parts,
1158
- uploadId: _classPrivateFieldGet(_this, _uploadId),
1159
- isMp4: isMp4Supported(_classPrivateFieldGet(_this, _mimeType$1)),
1160
- logs: sessionLogs
1161
- },
1162
- config: {
1163
- signal: _classPrivateFieldGet(_this, _abortController).signal
1164
- }
1165
- }));
1168
+ _classPrivateFieldSet(_this, _completeUploadPromise, _this.completeUploadNotifyServer(parts, sessionLogs));
1166
1169
  _classPrivateFieldGet(_this, _logger$1).info("completeUpload -> completing upload... ");
1167
1170
  _context.next = 28;
1168
1171
  return _classPrivateFieldGet(_this, _completeUploadPromise);
@@ -1311,14 +1314,40 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1311
1314
  }
1312
1315
  }
1313
1316
  });
1317
+ _defineProperty(this, "generatePreSignedUrl", /*#__PURE__*/function () {
1318
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(partNumber) {
1319
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1320
+ while (1) switch (_context3.prev = _context3.next) {
1321
+ case 0:
1322
+ return _context3.abrupt("return", partPresignedUrlApi.create({
1323
+ recordingId: _classPrivateFieldGet(_this, _recordingId),
1324
+ payload: {
1325
+ partNumber: partNumber,
1326
+ uploadId: _classPrivateFieldGet(_this, _uploadId),
1327
+ isMp4: _classPrivateFieldGet(_this, _mimeType$1) === MIME_TYPE.mp4
1328
+ },
1329
+ config: {
1330
+ signal: _classPrivateFieldGet(_this, _abortController).signal
1331
+ }
1332
+ }));
1333
+ case 1:
1334
+ case "end":
1335
+ return _context3.stop();
1336
+ }
1337
+ }, _callee3);
1338
+ }));
1339
+ return function (_x2) {
1340
+ return _ref3.apply(this, arguments);
1341
+ };
1342
+ }());
1314
1343
  _classPrivateFieldInitSpec$1(this, _uploadChunkToS, {
1315
1344
  writable: true,
1316
1345
  value: function () {
1317
- var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chunks) {
1346
+ var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(chunks) {
1318
1347
  var _this$partNumber;
1319
- var partNumber, _yield$partPresignedU, presignedUrl, s3PartUploadPromise;
1320
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1321
- while (1) switch (_context3.prev = _context3.next) {
1348
+ var partNumber, _yield$_this$generate, presignedUrl, s3PartUploadPromise;
1349
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
1350
+ while (1) switch (_context4.prev = _context4.next) {
1322
1351
  case 0:
1323
1352
  _classPrivateFieldGet(_this, _logger$1).info("Part ready to be uploaded: ", _classPrivateFieldGet(_this, _partNumber));
1324
1353
  partNumber = _classPrivateFieldGet(_this, _partNumber);
@@ -1329,22 +1358,12 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1329
1358
  type: _classPrivateFieldGet(_this, _mimeType$1)
1330
1359
  }).size
1331
1360
  };
1332
- _context3.prev = 4;
1333
- _context3.next = 7;
1334
- return partPresignedUrlApi.create({
1335
- recordingId: _classPrivateFieldGet(_this, _recordingId),
1336
- payload: {
1337
- partNumber: partNumber,
1338
- uploadId: _classPrivateFieldGet(_this, _uploadId),
1339
- isMp4: _classPrivateFieldGet(_this, _mimeType$1) === MIME_TYPE.mp4
1340
- },
1341
- config: {
1342
- signal: _classPrivateFieldGet(_this, _abortController).signal
1343
- }
1344
- });
1361
+ _context4.prev = 4;
1362
+ _context4.next = 7;
1363
+ return _this.generatePreSignedUrl(partNumber);
1345
1364
  case 7:
1346
- _yield$partPresignedU = _context3.sent;
1347
- presignedUrl = _yield$partPresignedU.presignedUrl;
1365
+ _yield$_this$generate = _context4.sent;
1366
+ presignedUrl = _yield$_this$generate.presignedUrl;
1348
1367
  _classPrivateFieldGet(_this, _logger$1).info("Presigned url created for partNumber:", partNumber);
1349
1368
  s3PartUploadPromise = s3Api.presignedUpload({
1350
1369
  presignedUrl: presignedUrl,
@@ -1373,19 +1392,19 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
1373
1392
  _classPrivateFieldGet(_this, _handleChunkUploadError).call(_this, error, partNumber);
1374
1393
  });
1375
1394
  _classPrivateFieldGet(_this, _s3PartUploadPromises).push(s3PartUploadPromise);
1376
- _context3.next = 17;
1395
+ _context4.next = 17;
1377
1396
  break;
1378
1397
  case 14:
1379
- _context3.prev = 14;
1380
- _context3.t0 = _context3["catch"](4);
1381
- _classPrivateFieldGet(_this, _handleChunkUploadError).call(_this, _context3.t0, partNumber);
1398
+ _context4.prev = 14;
1399
+ _context4.t0 = _context4["catch"](4);
1400
+ _classPrivateFieldGet(_this, _handleChunkUploadError).call(_this, _context4.t0, partNumber);
1382
1401
  case 17:
1383
1402
  case "end":
1384
- return _context3.stop();
1403
+ return _context4.stop();
1385
1404
  }
1386
- }, _callee3, null, [[4, 14]]);
1405
+ }, _callee4, null, [[4, 14]]);
1387
1406
  }));
1388
- function value(_x2) {
1407
+ function value(_x3) {
1389
1408
  return _value.apply(this, arguments);
1390
1409
  }
1391
1410
  return value;
@@ -1428,9 +1447,9 @@ function _get_isRecordingNotSet() {
1428
1447
  }
1429
1448
  var multipartS3Uploader = new MultipartS3Uploader();
1430
1449
  var getMultipartS3Uploader = function getMultipartS3Uploader() {
1431
- var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1432
- _ref3$initialize = _ref3.initialize,
1433
- initialize = _ref3$initialize === void 0 ? false : _ref3$initialize;
1450
+ var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1451
+ _ref4$initialize = _ref4.initialize,
1452
+ initialize = _ref4$initialize === void 0 ? false : _ref4$initialize;
1434
1453
  if (!multipartS3Uploader || initialize) {
1435
1454
  multipartS3Uploader = new MultipartS3Uploader();
1436
1455
  useMultipartS3UploadStatus$1.triggerStatusChange();
@@ -1507,6 +1526,7 @@ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedec
1507
1526
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
1508
1527
  var _audio = /*#__PURE__*/new WeakMap();
1509
1528
  var _video = /*#__PURE__*/new WeakMap();
1529
+ var _videoStream = /*#__PURE__*/new WeakMap();
1510
1530
  var _mediaRecorder = /*#__PURE__*/new WeakMap();
1511
1531
  var _mediaStream = /*#__PURE__*/new WeakMap();
1512
1532
  var _store = /*#__PURE__*/new WeakMap();
@@ -1547,6 +1567,10 @@ var ScreenRecorder = /*#__PURE__*/function () {
1547
1567
  writable: true,
1548
1568
  value: void 0
1549
1569
  });
1570
+ _classPrivateFieldInitSpec(this, _videoStream, {
1571
+ writable: true,
1572
+ value: void 0
1573
+ });
1550
1574
  _classPrivateFieldInitSpec(this, _mediaRecorder, {
1551
1575
  writable: true,
1552
1576
  value: void 0
@@ -1884,13 +1908,22 @@ var ScreenRecorder = /*#__PURE__*/function () {
1884
1908
  _context2.t0 = _context2["catch"](8);
1885
1909
  console.error("Failed to load audio worklet:", _context2.t0);
1886
1910
  case 24:
1887
- _context2.next = 26;
1911
+ if (!_classPrivateFieldGet(_this, _videoStream)) {
1912
+ _context2.next = 28;
1913
+ break;
1914
+ }
1915
+ stream = _classPrivateFieldGet(_this, _videoStream);
1916
+ _context2.next = 31;
1917
+ break;
1918
+ case 28:
1919
+ _context2.next = 30;
1888
1920
  return window.navigator.mediaDevices.getDisplayMedia({
1889
1921
  video: _classPrivateFieldGet(_this, _video) || true,
1890
1922
  audio: true
1891
1923
  });
1892
- case 26:
1924
+ case 30:
1893
1925
  stream = _context2.sent;
1926
+ case 31:
1894
1927
  // Event triggered when the user clicks on the stop sharing overlay button
1895
1928
  stream.getVideoTracks()[0].addEventListener("ended", function () {
1896
1929
  _this.stopRecording();
@@ -1921,10 +1954,10 @@ var ScreenRecorder = /*#__PURE__*/function () {
1921
1954
  _classPrivateFieldGet(_this, _store).setState({
1922
1955
  status: SCREEN_RECORDER_STATUS.media_acquired
1923
1956
  });
1924
- _context2.next = 39;
1957
+ _context2.next = 43;
1925
1958
  break;
1926
- case 36:
1927
- _context2.prev = 36;
1959
+ case 40:
1960
+ _context2.prev = 40;
1928
1961
  _context2.t1 = _context2["catch"](1);
1929
1962
  if (_classPrivateFieldGet(_this, _audio) && !_classPrivateFieldGet(_this, _audioStream)) {
1930
1963
  _classPrivateFieldGet(_this, _store).setState({
@@ -1937,11 +1970,11 @@ var ScreenRecorder = /*#__PURE__*/function () {
1937
1970
  status: SCREEN_RECORDER_STATUS.idle
1938
1971
  });
1939
1972
  }
1940
- case 39:
1973
+ case 43:
1941
1974
  case "end":
1942
1975
  return _context2.stop();
1943
1976
  }
1944
- }, _callee2, null, [[1, 36], [8, 21]]);
1977
+ }, _callee2, null, [[1, 40], [8, 21]]);
1945
1978
  }));
1946
1979
  function value() {
1947
1980
  return _value.apply(this, arguments);
@@ -1997,17 +2030,21 @@ var ScreenRecorder = /*#__PURE__*/function () {
1997
2030
  writable: true,
1998
2031
  value: function value() {
1999
2032
  if (_classPrivateFieldGet(_this, _countdownTimerId)) return;
2033
+ _classPrivateFieldGet(_this, _fireCallbacks).call(_this, SCREEN_RECORDER_EVENT.onCountdownStart);
2000
2034
  _classPrivateFieldSet(_this, _countdownTimerId, setInterval(function () {
2001
2035
  _classPrivateFieldGet(_this, _store).setState(function (_ref3) {
2002
2036
  var countdownTimeLeft = _ref3.countdownTimeLeft;
2003
- if (equals(countdownTimeLeft, ONE_SECOND)) {
2037
+ if (equals(countdownTimeLeft, ONE_SECOND) && !_classPrivateFieldGet(_this, _videoStream)) {
2004
2038
  _classPrivateFieldGet(_this, _startRecordingAudio).play();
2005
2039
  }
2006
2040
  if (countdownTimeLeft - ONE_SECOND > 0) {
2041
+ _classPrivateFieldGet(_this, _fireCallbacks).call(_this, SCREEN_RECORDER_EVENT.onCountdown, [countdownTimeLeft - ONE_SECOND]);
2007
2042
  return {
2008
2043
  countdownTimeLeft: countdownTimeLeft - ONE_SECOND
2009
2044
  };
2010
2045
  }
2046
+ _classPrivateFieldGet(_this, _fireCallbacks).call(_this, SCREEN_RECORDER_EVENT.onCountdown, [0]);
2047
+ _classPrivateFieldGet(_this, _fireCallbacks).call(_this, SCREEN_RECORDER_EVENT.onCountdownEnd);
2011
2048
  _classPrivateFieldGet(_this, _store).setState({
2012
2049
  status: SCREEN_RECORDER_STATUS.recording
2013
2050
  });
@@ -2144,6 +2181,11 @@ var ScreenRecorder = /*#__PURE__*/function () {
2144
2181
  get: function get() {
2145
2182
  return _classPrivateFieldGet(this, _audio);
2146
2183
  }
2184
+ }, {
2185
+ key: "videoStream",
2186
+ set: function set(value) {
2187
+ _classPrivateFieldSet(this, _videoStream, value);
2188
+ }
2147
2189
  }]);
2148
2190
  return ScreenRecorder;
2149
2191
  }();