@bigbinary/neeto-media-recorder 2.5.3 → 2.5.5
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/core.js +99 -93
- package/core.js.map +1 -1
- package/index.js +5 -45
- package/index.js.map +1 -1
- package/package.json +1 -1
package/core.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { isPresent, existsBy, isNotEmpty, isNot, noop } from '@bigbinary/neeto-cist';
|
|
3
|
-
import { MIME_TYPE as MIME_TYPE$1,
|
|
3
|
+
import { RETRYABLE_ERRORS, MIME_TYPE as MIME_TYPE$1, UPLOAD_STATUS, UPLOAD_EVENT, SCREEN_RECORDER_STATUS, START_RECORDING_SOUND, RECORDING_LIMIT_REACHED_WARNING_SOUND, SCREEN_RECORDER_ERROR, SCREEN_RECORDER_EVENT, RECORDING_TIME_LIMIT_FREE_PLAN, ONE_SECOND, HALF_A_SECOND_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, TWO_HUNDRED_MILLISECONDS, ONE_MINUTE_IN_MILLISECONDS, STOP_RECORDING_DUE_TO_LIMIT_REACHED_SOUND, IS_EXTENSION } from '@bigbinary/neeto-media-recorder/constants';
|
|
4
4
|
import { isNotNil, min, isNil, identity, isEmpty, pick, equals, not } from 'ramda';
|
|
5
5
|
import platform from 'platform';
|
|
6
6
|
import '@bigbinary/neeto-media-recorder/core';
|
|
@@ -773,14 +773,6 @@ var partPresignedUrlApi = {
|
|
|
773
773
|
create: retryableCreate
|
|
774
774
|
};
|
|
775
775
|
|
|
776
|
-
// https://www.w3.org/TR/screen-capture/#displaycapturesurfacetype
|
|
777
|
-
var DISPLAY_SURFACE = {
|
|
778
|
-
monitor: "monitor",
|
|
779
|
-
window: "window",
|
|
780
|
-
browser: "browser"
|
|
781
|
-
};
|
|
782
|
-
var MINIMUM_CHROMIUM_VERSION_FOR_MP4 = "128.0.6613.85";
|
|
783
|
-
|
|
784
776
|
var getUnSupportedConstraints = function getUnSupportedConstraints(mediaType) {
|
|
785
777
|
var supportedMediaConstraints = navigator.mediaDevices.getSupportedConstraints();
|
|
786
778
|
return Object.keys(mediaType).filter(function (constraint) {
|
|
@@ -807,51 +799,45 @@ var isStreamEnded = function isStreamEnded(mediaStream) {
|
|
|
807
799
|
readyState: "ended"
|
|
808
800
|
}, mediaStream.getTracks());
|
|
809
801
|
};
|
|
810
|
-
function
|
|
811
|
-
|
|
812
|
-
var match = userAgent.match(/Chrom(e|ium)\/(([0-9][.]?)+)/);
|
|
813
|
-
if (match) {
|
|
814
|
-
return match[2];
|
|
815
|
-
}
|
|
816
|
-
return null;
|
|
817
|
-
}
|
|
818
|
-
function compareChromiumVersions(version1, version2) {
|
|
819
|
-
var v1Parts = version1.split(".").map(Number);
|
|
820
|
-
var v2Parts = version2.split(".").map(Number);
|
|
821
|
-
for (var i = 0; i < Math.max(v1Parts.length, v2Parts.length); i++) {
|
|
822
|
-
var v1Part = v1Parts[i] || 0;
|
|
823
|
-
var v2Part = v2Parts[i] || 0;
|
|
824
|
-
if (v1Part > v2Part) return 1;
|
|
825
|
-
if (v1Part < v2Part) return -1;
|
|
826
|
-
}
|
|
827
|
-
return 0;
|
|
828
|
-
}
|
|
829
|
-
var getSupportedMimeType = function getSupportedMimeType(fallback) {
|
|
830
|
-
var _platform$os, _platform$os$family;
|
|
831
|
-
var isWindows = (_platform$os = platform.os) === null || _platform$os === void 0 ? void 0 : (_platform$os$family = _platform$os.family) === null || _platform$os$family === void 0 ? void 0 : _platform$os$family.includes("Windows");
|
|
832
|
-
if (MediaRecorder.isTypeSupported(MIME_TYPE.mp4) && !isWindows) {
|
|
833
|
-
if (platform.name === "Safari") {
|
|
834
|
-
return MIME_TYPE.mp4;
|
|
835
|
-
}
|
|
836
|
-
var chromiumVersion = getChromiumVersion();
|
|
837
|
-
if (isNil(chromiumVersion)) {
|
|
838
|
-
return MIME_TYPE.webmH264;
|
|
839
|
-
}
|
|
840
|
-
var isChromiumVersionSupported = compareChromiumVersions(chromiumVersion, MINIMUM_CHROMIUM_VERSION_FOR_MP4) >= 0;
|
|
841
|
-
if (isChromiumVersionSupported) {
|
|
842
|
-
return MIME_TYPE.mp4;
|
|
843
|
-
}
|
|
844
|
-
return MIME_TYPE.webmH264;
|
|
845
|
-
} else if (MediaRecorder.isTypeSupported(MIME_TYPE.webmH264)) {
|
|
846
|
-
return MIME_TYPE.webmH264;
|
|
847
|
-
}
|
|
848
|
-
return fallback;
|
|
802
|
+
var getSupportedMimeType = function getSupportedMimeType() {
|
|
803
|
+
return MIME_TYPE.webmH264;
|
|
849
804
|
};
|
|
850
805
|
|
|
851
|
-
// TODO:
|
|
806
|
+
// TODO: Uncomment this when mp4 is stable
|
|
807
|
+
// export const getSupportedMimeType = fallback => {
|
|
808
|
+
// const isWindows = platform.os?.family?.includes("Windows");
|
|
809
|
+
|
|
810
|
+
// if (MediaRecorder.isTypeSupported(MIME_TYPE.mp4) && !isWindows) {
|
|
811
|
+
// if (platform.name === "Safari") {
|
|
812
|
+
// return MIME_TYPE.mp4;
|
|
813
|
+
// }
|
|
814
|
+
|
|
815
|
+
// const chromiumVersion = getChromiumVersion();
|
|
816
|
+
|
|
817
|
+
// if (isNil(chromiumVersion)) {
|
|
818
|
+
// return MIME_TYPE.webmH264;
|
|
819
|
+
// }
|
|
820
|
+
|
|
821
|
+
// const isChromiumVersionSupported =
|
|
822
|
+
// compareChromiumVersions(
|
|
823
|
+
// chromiumVersion,
|
|
824
|
+
// MINIMUM_CHROMIUM_VERSION_FOR_MP4
|
|
825
|
+
// ) >= 0;
|
|
826
|
+
|
|
827
|
+
// if (isChromiumVersionSupported) {
|
|
828
|
+
// return MIME_TYPE.mp4;
|
|
829
|
+
// }
|
|
830
|
+
|
|
831
|
+
// return MIME_TYPE.webmH264;
|
|
832
|
+
// } else if (MediaRecorder.isTypeSupported(MIME_TYPE.webmH264)) {
|
|
833
|
+
// return MIME_TYPE.webmH264;
|
|
834
|
+
// }
|
|
835
|
+
|
|
836
|
+
// return fallback;
|
|
837
|
+
// };
|
|
838
|
+
|
|
852
839
|
var getMediaRecorderOptions = function getMediaRecorderOptions() {
|
|
853
840
|
var mimeType = getSupportedMimeType();
|
|
854
|
-
if (!mimeType) return {};
|
|
855
841
|
return {
|
|
856
842
|
mimeType: mimeType
|
|
857
843
|
};
|
|
@@ -859,7 +845,7 @@ var getMediaRecorderOptions = function getMediaRecorderOptions() {
|
|
|
859
845
|
|
|
860
846
|
var s3AxiosInstance = axios.create({
|
|
861
847
|
headers: {
|
|
862
|
-
"Content-Type": getSupportedMimeType(
|
|
848
|
+
"Content-Type": getSupportedMimeType()
|
|
863
849
|
}
|
|
864
850
|
});
|
|
865
851
|
s3AxiosInstance.interceptors.response.use(identity, function (error) {
|
|
@@ -1011,11 +997,12 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1011
997
|
status: UPLOAD_STATUS.uploading
|
|
1012
998
|
});
|
|
1013
999
|
if (!_classPrivateFieldGet(_this, _isNotInitialized)) {
|
|
1014
|
-
_context.next =
|
|
1000
|
+
_context.next = 5;
|
|
1015
1001
|
break;
|
|
1016
1002
|
}
|
|
1003
|
+
logger.error("completeUpload -> not initialized");
|
|
1017
1004
|
return _context.abrupt("return");
|
|
1018
|
-
case
|
|
1005
|
+
case 5:
|
|
1019
1006
|
// Upload last chunk; only if last chunk has data
|
|
1020
1007
|
if (_classPrivateFieldGet(_this, _getCurrentUnUploadedBlob).call(_this).size > 0) {
|
|
1021
1008
|
logger.info("completeUpload -> need to upload last chunk");
|
|
@@ -1032,16 +1019,16 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1032
1019
|
* This results in incorrect partNumbers.
|
|
1033
1020
|
*/
|
|
1034
1021
|
logger.info("completeUpload -> uploading all pending chunks...", _classPrivateFieldGet(_this, _pendingS3ChunkUploads).length);
|
|
1035
|
-
_context.next =
|
|
1022
|
+
_context.next = 9;
|
|
1036
1023
|
return Promise.all(_classPrivateFieldGet(_this, _pendingS3ChunkUploads));
|
|
1037
|
-
case
|
|
1024
|
+
case 9:
|
|
1038
1025
|
logger.info("completeUpload -> finishing part uploads...");
|
|
1039
|
-
_context.next =
|
|
1026
|
+
_context.next = 12;
|
|
1040
1027
|
return Promise.all(_classPrivateFieldGet(_this, _s3PartUploadPromises));
|
|
1041
|
-
case
|
|
1028
|
+
case 12:
|
|
1042
1029
|
resolvedS3PartUploadPromises = _context.sent;
|
|
1043
1030
|
if (!isNotEmpty(_classPrivateFieldGet(_this, _failedUpload))) {
|
|
1044
|
-
_context.next =
|
|
1031
|
+
_context.next = 19;
|
|
1045
1032
|
break;
|
|
1046
1033
|
}
|
|
1047
1034
|
logger.info("completeUpload -> chunks with these partNumbers failed:", _classPrivateFieldGet(_this, _failedUpload));
|
|
@@ -1053,9 +1040,9 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1053
1040
|
status: UPLOAD_STATUS.error
|
|
1054
1041
|
});
|
|
1055
1042
|
return _context.abrupt("return");
|
|
1056
|
-
case
|
|
1043
|
+
case 19:
|
|
1057
1044
|
if (!(resolvedS3PartUploadPromises.length === 0)) {
|
|
1058
|
-
_context.next =
|
|
1045
|
+
_context.next = 23;
|
|
1059
1046
|
break;
|
|
1060
1047
|
}
|
|
1061
1048
|
logger.info("completeUpload -> insufficient data");
|
|
@@ -1063,7 +1050,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1063
1050
|
status: UPLOAD_STATUS.insufficient_data
|
|
1064
1051
|
});
|
|
1065
1052
|
return _context.abrupt("return");
|
|
1066
|
-
case
|
|
1053
|
+
case 23:
|
|
1067
1054
|
parts = resolvedS3PartUploadPromises.filter(isNotCancelledRequest).map(function (resolvedResponse) {
|
|
1068
1055
|
return {
|
|
1069
1056
|
etag: resolvedResponse.headers.etag,
|
|
@@ -1085,25 +1072,25 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1085
1072
|
}
|
|
1086
1073
|
}));
|
|
1087
1074
|
logger.info("completeUpload -> completing upload... ");
|
|
1088
|
-
_context.next =
|
|
1075
|
+
_context.next = 29;
|
|
1089
1076
|
return _classPrivateFieldGet(_this, _completeUploadPromise);
|
|
1090
|
-
case
|
|
1077
|
+
case 29:
|
|
1091
1078
|
logger.info("completeUpload -> upload completed");
|
|
1092
1079
|
if (!(_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.aborting)) {
|
|
1093
|
-
_context.next =
|
|
1080
|
+
_context.next = 33;
|
|
1094
1081
|
break;
|
|
1095
1082
|
}
|
|
1096
1083
|
logger.info("completeUpload -> upload was marked as aborted");
|
|
1097
1084
|
return _context.abrupt("return");
|
|
1098
|
-
case
|
|
1085
|
+
case 33:
|
|
1099
1086
|
_classPrivateFieldGet(_this, _store$1).setState({
|
|
1100
1087
|
status: UPLOAD_STATUS.completed
|
|
1101
1088
|
});
|
|
1102
1089
|
_classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onComplete);
|
|
1103
|
-
_context.next =
|
|
1090
|
+
_context.next = 40;
|
|
1104
1091
|
break;
|
|
1105
|
-
case
|
|
1106
|
-
_context.prev =
|
|
1092
|
+
case 37:
|
|
1093
|
+
_context.prev = 37;
|
|
1107
1094
|
_context.t0 = _context["catch"](0);
|
|
1108
1095
|
// ignore if aborted
|
|
1109
1096
|
if (!axios.isCancel(_context.t0)) {
|
|
@@ -1113,35 +1100,43 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1113
1100
|
_classPrivateFieldGet(_this, _fireCallbacks$1).call(_this, UPLOAD_EVENT.onError);
|
|
1114
1101
|
logger.error(_context.t0);
|
|
1115
1102
|
}
|
|
1116
|
-
case
|
|
1117
|
-
_context.prev =
|
|
1103
|
+
case 40:
|
|
1104
|
+
_context.prev = 40;
|
|
1118
1105
|
_classPrivateFieldSet(_this, _completeUploadPromise, null);
|
|
1119
|
-
return _context.finish(
|
|
1120
|
-
case
|
|
1106
|
+
return _context.finish(40);
|
|
1107
|
+
case 43:
|
|
1121
1108
|
case "end":
|
|
1122
1109
|
return _context.stop();
|
|
1123
1110
|
}
|
|
1124
|
-
}, _callee, null, [[0,
|
|
1111
|
+
}, _callee, null, [[0, 37, 40, 43]]);
|
|
1125
1112
|
})));
|
|
1126
1113
|
_defineProperty(this, "abortUpload", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
1127
1114
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
1128
1115
|
while (1) switch (_context2.prev = _context2.next) {
|
|
1129
1116
|
case 0:
|
|
1130
1117
|
_context2.prev = 0;
|
|
1118
|
+
if (!(_classPrivateFieldGet(_this, _store$1).getState().status === UPLOAD_STATUS.aborting)) {
|
|
1119
|
+
_context2.next = 4;
|
|
1120
|
+
break;
|
|
1121
|
+
}
|
|
1122
|
+
logger.info("abortUpload -> already aborting");
|
|
1123
|
+
return _context2.abrupt("return");
|
|
1124
|
+
case 4:
|
|
1131
1125
|
_classPrivateFieldGet(_this, _store$1).setState({
|
|
1132
1126
|
status: UPLOAD_STATUS.aborting
|
|
1133
1127
|
});
|
|
1134
1128
|
if (!_classPrivateFieldGet(_this, _isNotInitialized)) {
|
|
1135
|
-
_context2.next =
|
|
1129
|
+
_context2.next = 8;
|
|
1136
1130
|
break;
|
|
1137
1131
|
}
|
|
1132
|
+
logger.info("abortUpload -> not initialized");
|
|
1138
1133
|
return _context2.abrupt("return");
|
|
1139
|
-
case
|
|
1140
|
-
_context2.next =
|
|
1134
|
+
case 8:
|
|
1135
|
+
_context2.next = 10;
|
|
1141
1136
|
return _classPrivateFieldGet(_this, _completeUploadPromise);
|
|
1142
|
-
case
|
|
1137
|
+
case 10:
|
|
1143
1138
|
_classPrivateFieldGet(_this, _abortController).abort();
|
|
1144
|
-
_context2.next =
|
|
1139
|
+
_context2.next = 13;
|
|
1145
1140
|
return abortUploadApi.create({
|
|
1146
1141
|
recordingId: _classPrivateFieldGet(_this, _recordingId),
|
|
1147
1142
|
payload: {
|
|
@@ -1149,7 +1144,8 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1149
1144
|
isMp4: isMp4Supported()
|
|
1150
1145
|
}
|
|
1151
1146
|
});
|
|
1152
|
-
case
|
|
1147
|
+
case 13:
|
|
1148
|
+
logger.info("abortUpload -> abort successful");
|
|
1153
1149
|
_classPrivateFieldSet(_this, _unUploadedChunks, []);
|
|
1154
1150
|
_classPrivateFieldSet(_this, _partNumber, 1);
|
|
1155
1151
|
_classPrivateFieldSet(_this, _s3PartUploadPromises, []);
|
|
@@ -1157,17 +1153,17 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1157
1153
|
status: ""
|
|
1158
1154
|
});
|
|
1159
1155
|
_classPrivateFieldSet(_this, _abortController, null);
|
|
1160
|
-
_context2.next =
|
|
1156
|
+
_context2.next = 24;
|
|
1161
1157
|
break;
|
|
1162
|
-
case
|
|
1163
|
-
_context2.prev =
|
|
1158
|
+
case 21:
|
|
1159
|
+
_context2.prev = 21;
|
|
1164
1160
|
_context2.t0 = _context2["catch"](0);
|
|
1165
1161
|
logger.error(_context2.t0);
|
|
1166
|
-
case
|
|
1162
|
+
case 24:
|
|
1167
1163
|
case "end":
|
|
1168
1164
|
return _context2.stop();
|
|
1169
1165
|
}
|
|
1170
|
-
}, _callee2, null, [[0,
|
|
1166
|
+
}, _callee2, null, [[0, 21]]);
|
|
1171
1167
|
})));
|
|
1172
1168
|
_defineProperty(this, "resetState", function () {
|
|
1173
1169
|
_classPrivateFieldSet(_this, _recordingId, "");
|
|
@@ -1175,6 +1171,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1175
1171
|
_classPrivateFieldSet(_this, _unUploadedChunks, []);
|
|
1176
1172
|
_classPrivateFieldSet(_this, _partNumber, 1);
|
|
1177
1173
|
_classPrivateFieldSet(_this, _s3PartUploadPromises, []);
|
|
1174
|
+
_classPrivateFieldSet(_this, _pendingS3ChunkUploads, []);
|
|
1178
1175
|
_classPrivateFieldSet(_this, _callbacks$1, {});
|
|
1179
1176
|
_classPrivateFieldSet(_this, _failedUpload, []);
|
|
1180
1177
|
_classPrivateFieldSet(_this, _uploadProgress, {});
|
|
@@ -1214,15 +1211,15 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1214
1211
|
case 0:
|
|
1215
1212
|
logger.info("Part ready to be uploaded: ", _classPrivateFieldGet(_this, _partNumber));
|
|
1216
1213
|
partNumber = _classPrivateFieldGet(_this, _partNumber);
|
|
1214
|
+
mimeType = getSupportedMimeType();
|
|
1217
1215
|
_classPrivateFieldSet(_this, _partNumber, (_this$partNumber = _classPrivateFieldGet(_this, _partNumber), _this$partNumber++, _this$partNumber));
|
|
1218
1216
|
_classPrivateFieldGet(_this, _uploadProgress)[partNumber] = {
|
|
1219
1217
|
uploaded: 0,
|
|
1220
1218
|
total: new Blob(chunks, {
|
|
1221
|
-
type:
|
|
1219
|
+
type: mimeType
|
|
1222
1220
|
}).size
|
|
1223
1221
|
};
|
|
1224
|
-
_context3.prev =
|
|
1225
|
-
mimeType = getSupportedMimeType(MIME_TYPE.webmH264);
|
|
1222
|
+
_context3.prev = 5;
|
|
1226
1223
|
_context3.next = 8;
|
|
1227
1224
|
return partPresignedUrlApi.create({
|
|
1228
1225
|
recordingId: _classPrivateFieldGet(_this, _recordingId),
|
|
@@ -1265,7 +1262,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1265
1262
|
break;
|
|
1266
1263
|
case 15:
|
|
1267
1264
|
_context3.prev = 15;
|
|
1268
|
-
_context3.t0 = _context3["catch"](
|
|
1265
|
+
_context3.t0 = _context3["catch"](5);
|
|
1269
1266
|
// ignore if aborted
|
|
1270
1267
|
if (!axios.isCancel(_context3.t0)) {
|
|
1271
1268
|
logger.error("Failed to upload partNumber:", partNumber);
|
|
@@ -1282,7 +1279,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1282
1279
|
case "end":
|
|
1283
1280
|
return _context3.stop();
|
|
1284
1281
|
}
|
|
1285
|
-
}, _callee3, null, [[
|
|
1282
|
+
}, _callee3, null, [[5, 15]]);
|
|
1286
1283
|
}));
|
|
1287
1284
|
function value(_x) {
|
|
1288
1285
|
return _value.apply(this, arguments);
|
|
@@ -1294,7 +1291,7 @@ var MultipartS3Uploader = /*#__PURE__*/function () {
|
|
|
1294
1291
|
writable: true,
|
|
1295
1292
|
value: function value() {
|
|
1296
1293
|
return new Blob(_classPrivateFieldGet(_this, _unUploadedChunks), {
|
|
1297
|
-
type: getSupportedMimeType(
|
|
1294
|
+
type: getSupportedMimeType()
|
|
1298
1295
|
});
|
|
1299
1296
|
}
|
|
1300
1297
|
});
|
|
@@ -1360,6 +1357,13 @@ function _slicedToArray(arr, i) {
|
|
|
1360
1357
|
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
1361
1358
|
}
|
|
1362
1359
|
|
|
1360
|
+
// https://www.w3.org/TR/screen-capture/#displaycapturesurfacetype
|
|
1361
|
+
var DISPLAY_SURFACE = {
|
|
1362
|
+
monitor: "monitor",
|
|
1363
|
+
window: "window",
|
|
1364
|
+
browser: "browser"
|
|
1365
|
+
};
|
|
1366
|
+
|
|
1363
1367
|
function ownKeys$1(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; }
|
|
1364
1368
|
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1365
1369
|
var initialState = {
|
|
@@ -1499,7 +1503,7 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
1499
1503
|
});
|
|
1500
1504
|
_defineProperty(this, "getWebmMediaBlob", function () {
|
|
1501
1505
|
return new Blob(_classPrivateFieldGet(_this, _mediaChunks), {
|
|
1502
|
-
type: getSupportedMimeType(
|
|
1506
|
+
type: getSupportedMimeType()
|
|
1503
1507
|
});
|
|
1504
1508
|
});
|
|
1505
1509
|
_defineProperty(this, "addCallback", function (event, callback) {
|
|
@@ -1879,6 +1883,7 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
1879
1883
|
_classPrivateFieldGet(_this, _mediaRecorder).start(5000);
|
|
1880
1884
|
_classPrivateFieldGet(_this, _startTimer).call(_this);
|
|
1881
1885
|
} catch (error) {
|
|
1886
|
+
clearInterval(_classPrivateFieldGet(_this, _timerId));
|
|
1882
1887
|
_classPrivateFieldGet(_this, _store).setState({
|
|
1883
1888
|
status: SCREEN_RECORDER_STATUS.idle,
|
|
1884
1889
|
error: SCREEN_RECORDER_ERROR[error.name]
|
|
@@ -1887,8 +1892,9 @@ var ScreenRecorder = /*#__PURE__*/function () {
|
|
|
1887
1892
|
// To prevent triggering #onRecordingStop when the mediaRecorder is failed to start.
|
|
1888
1893
|
_classPrivateFieldGet(_this, _mediaRecorder).onstop = noop;
|
|
1889
1894
|
if (_classPrivateFieldGet(_this, _mediaStream)) {
|
|
1890
|
-
_classPrivateFieldGet(_this, _mediaStream).
|
|
1891
|
-
|
|
1895
|
+
_classPrivateFieldGet(_this, _mediaStream).getTracks().forEach(function (track) {
|
|
1896
|
+
return track.stop();
|
|
1897
|
+
});
|
|
1892
1898
|
_classPrivateFieldSet(_this, _mediaStream, null);
|
|
1893
1899
|
}
|
|
1894
1900
|
_classPrivateFieldSet(_this, _stream, null);
|