@bigbinary/neeto-media-recorder 2.7.28 → 2.7.29-beta.2

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/index.js CHANGED
@@ -8,8 +8,9 @@ import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
8
8
  import Alert from '@bigbinary/neetoui/Alert';
9
9
  import { Trans, useTranslation } from 'react-i18next';
10
10
  import axios from 'axios';
11
+ import Toastr from '@bigbinary/neetoui/Toastr';
11
12
  import platform from 'platform';
12
- import { isNotNil, isEmpty } from 'ramda';
13
+ import { isNotNil } from 'ramda';
13
14
  import withT from '@bigbinary/neeto-commons-frontend/react-utils/withT';
14
15
  import Typography from '@bigbinary/neetoui/Typography';
15
16
  import Spinner from '@bigbinary/neetoui/Spinner';
@@ -22,7 +23,6 @@ import Pause from '@bigbinary/neeto-icons/Pause';
22
23
  import Unlock from '@bigbinary/neeto-icons/Unlock';
23
24
  import Delete from '@bigbinary/neeto-icons/Delete';
24
25
  import Browser from '@bigbinary/neeto-icons/Browser';
25
- import { copyToClipboard } from '@bigbinary/neeto-commons-frontend/utils/general';
26
26
  import Close from '@bigbinary/neeto-icons/Close';
27
27
  import Download from '@bigbinary/neeto-icons/Download';
28
28
  import Copy from '@bigbinary/neeto-icons/Copy';
@@ -508,14 +508,49 @@ var UPLOAD_STATUS = {
508
508
  };
509
509
  var HAS_CHROME_NAMESPACE = (typeof chrome === "undefined" ? "undefined" : _typeof$1(chrome)) === "object";
510
510
  var IS_EXTENSION = HAS_CHROME_NAMESPACE && isNotNil(chrome.extension);
511
- platform.name === "Safari";
511
+ var IS_SAFARI = platform.name === "Safari";
512
+
513
+ // Firefox refuses to start a MediaRecorder on a stream that has both audio and
514
+ // video tracks unless the MIME string declares the audio codec too. Chromium
515
+ // and Safari accept the video-only form and silently pick Opus/AAC. We keep
516
+ // both variants and always prefer the codec-complete ones in
517
+ // getSupportedMimeType so a single code path works across browsers.
512
518
  var MIME_TYPE = {
513
519
  mp4: "video/mp4",
514
- webmH264: "video/webm;codecs=h264"
520
+ webmH264Opus: "video/webm;codecs=h264,opus",
521
+ webmH264: "video/webm;codecs=h264",
522
+ webmVp9Opus: "video/webm;codecs=vp9,opus",
523
+ webmVp9: "video/webm;codecs=vp9",
524
+ webmVp8Opus: "video/webm;codecs=vp8,opus",
525
+ webmVp8: "video/webm;codecs=vp8",
526
+ webm: "video/webm"
515
527
  };
516
528
 
529
+ // Picks the best MediaRecorder MIME type the current browser supports.
530
+ // Chromium produces H.264-in-WebM, Safari only produces MP4, and Firefox
531
+ // produces VP9/VP8-in-WebM. Returns null if none of the candidates are
532
+ // supported so callers can surface an "unsupported browser" state.
517
533
  var getSupportedMimeType = function getSupportedMimeType() {
518
- return MIME_TYPE.webmH264;
534
+ var _candidates$find;
535
+ if (typeof MediaRecorder === "undefined") return null;
536
+
537
+ // Safari only exposes a working MediaRecorder for MP4.
538
+ if (IS_SAFARI && MediaRecorder.isTypeSupported(MIME_TYPE.mp4)) {
539
+ return MIME_TYPE.mp4;
540
+ }
541
+
542
+ // Prefer types that declare the audio codec explicitly. Firefox requires
543
+ // this when the MediaStream has both audio and video tracks; Chromium and
544
+ // Safari are happy with either form.
545
+ var candidates = [MIME_TYPE.webmH264Opus, MIME_TYPE.webmVp9Opus, MIME_TYPE.webmVp8Opus, MIME_TYPE.webmH264, MIME_TYPE.webmVp9, MIME_TYPE.webmVp8, MIME_TYPE.webm, MIME_TYPE.mp4];
546
+ return (_candidates$find = candidates.find(function (type) {
547
+ return MediaRecorder.isTypeSupported(type);
548
+ })) !== null && _candidates$find !== void 0 ? _candidates$find : null;
549
+ };
550
+
551
+ var generatePublicUrl = function generatePublicUrl(recordingId) {
552
+ var baseURL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.location.origin;
553
+ return "".concat(baseURL, "/watch/").concat(recordingId);
519
554
  };
520
555
 
521
556
  var formatTime = function formatTime(time) {
@@ -629,6 +664,74 @@ var isMp4Supported = function isMp4Supported() {
629
664
  return mimeType.includes(MIME_TYPE$1.mp4);
630
665
  };
631
666
 
667
+ /**
668
+ * Copy a recording's public link to the clipboard while preserving Safari's
669
+ * transient user activation. Must be invoked synchronously inside a user
670
+ * gesture handler (e.g. button onClick).
671
+ *
672
+ * Safari (WebKit) refuses navigator.clipboard.write[Text] outside a user
673
+ * gesture, so the post-recording auto-copy cannot be done in a useEffect.
674
+ * Since `recording.id` is only known once the create-recording POST resolves,
675
+ * we keep the gesture alive across that wait by handing
676
+ * navigator.clipboard.write a ClipboardItem backed by a Promise<Blob>; Safari
677
+ * preserves the activation until the promise settles.
678
+ *
679
+ * @param {Object} params
680
+ * @param {React.RefObject<Promise<unknown> | null>} params.createRecordingPromise
681
+ * @param {React.RefObject<{ id?: string | number }>} params.recordingRef
682
+ * @param {React.RefObject<string>} params.baseURLRef
683
+ * @param {string} params.successMessage Toastr message shown on success.
684
+ */
685
+ var copyRecordingLinkToClipboardOnStop = function copyRecordingLinkToClipboardOnStop(_ref3) {
686
+ var _navigator$clipboard;
687
+ var createRecordingPromise = _ref3.createRecordingPromise,
688
+ recordingRef = _ref3.recordingRef,
689
+ baseURLRef = _ref3.baseURLRef,
690
+ successMessage = _ref3.successMessage;
691
+ if (typeof window.ClipboardItem !== "function" || !((_navigator$clipboard = navigator.clipboard) !== null && _navigator$clipboard !== void 0 && _navigator$clipboard.write)) {
692
+ return;
693
+ }
694
+ var linkBlobPromise = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
695
+ var _recordingRef$current;
696
+ var recordingId, baseURL;
697
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
698
+ while (1) switch (_context2.prev = _context2.next) {
699
+ case 0:
700
+ if (!(createRecordingPromise !== null && createRecordingPromise !== void 0 && createRecordingPromise.current)) {
701
+ _context2.next = 3;
702
+ break;
703
+ }
704
+ _context2.next = 3;
705
+ return createRecordingPromise.current;
706
+ case 3:
707
+ recordingId = recordingRef === null || recordingRef === void 0 ? void 0 : (_recordingRef$current = recordingRef.current) === null || _recordingRef$current === void 0 ? void 0 : _recordingRef$current.id;
708
+ baseURL = baseURLRef === null || baseURLRef === void 0 ? void 0 : baseURLRef.current;
709
+ if (!(!recordingId || !baseURL)) {
710
+ _context2.next = 7;
711
+ break;
712
+ }
713
+ throw new Error("Recording id or base URL unavailable");
714
+ case 7:
715
+ return _context2.abrupt("return", new Blob([generatePublicUrl(recordingId, baseURL)], {
716
+ type: "text/plain"
717
+ }));
718
+ case 8:
719
+ case "end":
720
+ return _context2.stop();
721
+ }
722
+ }, _callee2);
723
+ }))();
724
+
725
+ // Swallow the unhandled rejection on the inner promise; clipboard.write
726
+ // already observes it, but we don't want stray unhandled rejection logs.
727
+ linkBlobPromise["catch"](noop);
728
+ navigator.clipboard.write([new ClipboardItem({
729
+ "text/plain": linkBlobPromise
730
+ })]).then(function () {
731
+ return Toastr.success(successMessage);
732
+ })["catch"](noop);
733
+ };
734
+
632
735
  function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
633
736
  function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
634
737
  var baseUrl = "/api/v1/recordings";
@@ -1022,13 +1125,13 @@ var Controls = function Controls(_ref) {
1022
1125
  var setIsRestartAlertOpen = _ref.setIsRestartAlertOpen,
1023
1126
  setIsDiscardAlertOpen = _ref.setIsDiscardAlertOpen,
1024
1127
  onDiscard = _ref.onDiscard,
1128
+ onStopRecording = _ref.onStopRecording,
1025
1129
  requested = _ref.requested,
1026
1130
  appName = _ref.appName;
1027
1131
  var _useTranslation = useTranslation(),
1028
1132
  t = _useTranslation.t;
1029
1133
  var startRecording = screenRecorder.startRecording,
1030
1134
  pauseRecording = screenRecorder.pauseRecording,
1031
- stopRecording = screenRecorder.stopRecording,
1032
1135
  resumeRecording = screenRecorder.resumeRecording,
1033
1136
  useRecorderStore = screenRecorder.useRecorderStore,
1034
1137
  setAudioConfiguration = screenRecorder.setAudioConfiguration;
@@ -1118,7 +1221,7 @@ var Controls = function Controls(_ref) {
1118
1221
  label: t("neetoMediaRecorder.record.done"),
1119
1222
  size: "large",
1120
1223
  style: "danger-text",
1121
- onClick: stopRecording
1224
+ onClick: onStopRecording
1122
1225
  }), /*#__PURE__*/jsx("div", {
1123
1226
  className: "neeto-ui-bg-gray-200 h-10 w-0.5"
1124
1227
  })]
@@ -1505,68 +1608,21 @@ var UnSupportedBrowser = withT(function (_ref) {
1505
1608
  });
1506
1609
  });
1507
1610
 
1508
- var generatePublicUrl = function generatePublicUrl(recordingId) {
1509
- var baseURL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.location.origin;
1510
- return "".concat(baseURL, "/watch/").concat(recordingId);
1511
- };
1512
-
1513
1611
  var UploadingInProgress = function UploadingInProgress(_ref) {
1514
- var recording = _ref.recording,
1612
+ var _ref$baseURL = _ref.baseURL,
1613
+ baseURL = _ref$baseURL === void 0 ? "" : _ref$baseURL,
1614
+ recording = _ref.recording,
1515
1615
  uploadProgress = _ref.uploadProgress,
1516
1616
  uploadStatus = _ref.uploadStatus,
1517
1617
  onDiscard = _ref.onDiscard,
1518
1618
  onRetryUpload = _ref.onRetryUpload,
1519
1619
  isRetryUpload = _ref.isRetryUpload;
1520
- var _useState = useState(""),
1620
+ var _useState = useState(false),
1521
1621
  _useState2 = _slicedToArray(_useState, 2),
1522
- baseURL = _useState2[0],
1523
- setBaseURL = _useState2[1];
1524
- var _useState3 = useState(false),
1525
- _useState4 = _slicedToArray(_useState3, 2),
1526
- isDiscardAlertOpen = _useState4[0],
1527
- setIsDiscardAlertOpen = _useState4[1];
1622
+ isDiscardAlertOpen = _useState2[0],
1623
+ setIsDiscardAlertOpen = _useState2[1];
1528
1624
  var _useTranslation = useTranslation(),
1529
1625
  t = _useTranslation.t;
1530
- useEffect(function () {
1531
- var fetchBaseURL = /*#__PURE__*/function () {
1532
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
1533
- var _yield$chrome$storage, baseURL;
1534
- return _regeneratorRuntime.wrap(function _callee$(_context) {
1535
- while (1) switch (_context.prev = _context.next) {
1536
- case 0:
1537
- if (IS_EXTENSION) {
1538
- _context.next = 3;
1539
- break;
1540
- }
1541
- setBaseURL(window.location.origin);
1542
- return _context.abrupt("return");
1543
- case 3:
1544
- _context.next = 5;
1545
- return chrome.storage.local.get("baseURL");
1546
- case 5:
1547
- _yield$chrome$storage = _context.sent;
1548
- baseURL = _yield$chrome$storage.baseURL;
1549
- setBaseURL(baseURL);
1550
- case 8:
1551
- case "end":
1552
- return _context.stop();
1553
- }
1554
- }, _callee);
1555
- }));
1556
- return function fetchBaseURL() {
1557
- return _ref2.apply(this, arguments);
1558
- };
1559
- }();
1560
- fetchBaseURL();
1561
- }, []);
1562
- useEffect(function () {
1563
- if (!window.document.hasFocus() || !recording.id || isEmpty(baseURL)) {
1564
- return;
1565
- }
1566
- copyToClipboard(generatePublicUrl(recording.id, baseURL), {
1567
- message: t("neetoMediaRecorder.record.copyToClipboardToastrMessage")
1568
- });
1569
- }, [recording.id, baseURL]);
1570
1626
  var handleRecordingBlobDownload = function handleRecordingBlobDownload() {
1571
1627
  var _recording$title;
1572
1628
  downloadRecordingBlob(screenRecorder.getWebmMediaBlob(), (_recording$title = recording.title) !== null && _recording$title !== void 0 ? _recording$title : "NeetoRecord-recording");
@@ -1651,7 +1707,7 @@ var useRecorderStore = screenRecorder.useRecorderStore,
1651
1707
  restartRecording = screenRecorder.restartRecording,
1652
1708
  discardRecording = screenRecorder.discardRecording;
1653
1709
  var globalProps = ((_window = window) === null || _window === void 0 ? void 0 : _window.globalProps) || {};
1654
- var MediaRecorder = function MediaRecorder(_ref, ref) {
1710
+ var MediaRecorder$1 = function MediaRecorder(_ref, ref) {
1655
1711
  var _ref$onUploadComplete = _ref.onUploadComplete,
1656
1712
  onUploadComplete = _ref$onUploadComplete === void 0 ? noop : _ref$onUploadComplete,
1657
1713
  _ref$onDiscard = _ref.onDiscard,
@@ -1695,7 +1751,47 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1695
1751
  _useState8 = _slicedToArray(_useState7, 2),
1696
1752
  isRetryUpload = _useState8[0],
1697
1753
  setIsRetryUpload = _useState8[1];
1754
+ var _useState9 = useState(""),
1755
+ _useState10 = _slicedToArray(_useState9, 2),
1756
+ baseURL = _useState10[0],
1757
+ setBaseURL = _useState10[1];
1698
1758
  var recordingRef = useRef({});
1759
+ var baseURLRef = useRef("");
1760
+ useEffect(function () {
1761
+ var fetchBaseURL = /*#__PURE__*/function () {
1762
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
1763
+ var origin, _yield$chrome$storage, extensionBaseURL;
1764
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
1765
+ while (1) switch (_context.prev = _context.next) {
1766
+ case 0:
1767
+ if (IS_EXTENSION) {
1768
+ _context.next = 5;
1769
+ break;
1770
+ }
1771
+ origin = window.location.origin;
1772
+ baseURLRef.current = origin;
1773
+ setBaseURL(origin);
1774
+ return _context.abrupt("return");
1775
+ case 5:
1776
+ _context.next = 7;
1777
+ return chrome.storage.local.get("baseURL");
1778
+ case 7:
1779
+ _yield$chrome$storage = _context.sent;
1780
+ extensionBaseURL = _yield$chrome$storage.baseURL;
1781
+ baseURLRef.current = extensionBaseURL || "";
1782
+ setBaseURL(extensionBaseURL || "");
1783
+ case 11:
1784
+ case "end":
1785
+ return _context.stop();
1786
+ }
1787
+ }, _callee);
1788
+ }));
1789
+ return function fetchBaseURL() {
1790
+ return _ref2.apply(this, arguments);
1791
+ };
1792
+ }();
1793
+ fetchBaseURL();
1794
+ }, []);
1699
1795
  var _useAudioIsCapturing = useAudioIsCapturing({
1700
1796
  isMicOn: isMicOn
1701
1797
  }),
@@ -1734,9 +1830,9 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1734
1830
  uploadStatus = _useMultipartS3Upload.status;
1735
1831
  var shouldShowTimeLimitWarning = showTimeLimitWarning && isRecorderStatus(SCREEN_RECORDER_STATUS.recording, SCREEN_RECORDER_STATUS.paused);
1736
1832
  var _useCreateRecording = useCreateRecording({
1737
- onSuccess: function onSuccess(_ref2) {
1738
- var recording = _ref2.recording,
1739
- uploadId = _ref2.uploadId;
1833
+ onSuccess: function onSuccess(_ref3) {
1834
+ var recording = _ref3.recording,
1835
+ uploadId = _ref3.uploadId;
1740
1836
  var multipartS3Uploader = getMultipartS3Uploader();
1741
1837
  multipartS3Uploader.setRecording(recording.id, uploadId);
1742
1838
  multipartS3Uploader.setMimeType(mimeType);
@@ -1779,95 +1875,106 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1779
1875
  onError(SCREEN_RECORDER_ERROR.CreateRecordingError);
1780
1876
  };
1781
1877
  var handleCreateRecording = /*#__PURE__*/function () {
1782
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
1878
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
1783
1879
  var payload;
1784
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
1785
- while (1) switch (_context2.prev = _context2.next) {
1880
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1881
+ while (1) switch (_context3.prev = _context3.next) {
1786
1882
  case 0:
1787
1883
  if (upload) {
1788
- _context2.next = 2;
1884
+ _context3.next = 2;
1789
1885
  break;
1790
1886
  }
1791
- return _context2.abrupt("return");
1887
+ return _context3.abrupt("return");
1792
1888
  case 2:
1793
1889
  payload = {
1794
1890
  folderId: folderId
1795
1891
  };
1796
- _context2.next = 5;
1892
+ _context3.next = 5;
1797
1893
  return getDeviceInfo(mimeType);
1798
1894
  case 5:
1799
- payload.deviceInfo = _context2.sent;
1800
- createRecordingPromise.current = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
1801
- return _regeneratorRuntime.wrap(function _callee$(_context) {
1802
- while (1) switch (_context.prev = _context.next) {
1895
+ payload.deviceInfo = _context3.sent;
1896
+ createRecordingPromise.current = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
1897
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
1898
+ while (1) switch (_context2.prev = _context2.next) {
1803
1899
  case 0:
1804
- _context.prev = 0;
1805
- _context.next = 3;
1900
+ _context2.prev = 0;
1901
+ _context2.next = 3;
1806
1902
  return createRecording(payload);
1807
1903
  case 3:
1808
- _context.next = 8;
1904
+ _context2.next = 8;
1809
1905
  break;
1810
1906
  case 5:
1811
- _context.prev = 5;
1812
- _context.t0 = _context["catch"](0);
1813
- handleCreateRecordingError(_context.t0);
1907
+ _context2.prev = 5;
1908
+ _context2.t0 = _context2["catch"](0);
1909
+ handleCreateRecordingError(_context2.t0);
1814
1910
  case 8:
1815
1911
  case "end":
1816
- return _context.stop();
1912
+ return _context2.stop();
1817
1913
  }
1818
- }, _callee, null, [[0, 5]]);
1914
+ }, _callee2, null, [[0, 5]]);
1819
1915
  }))();
1820
1916
  case 7:
1821
1917
  case "end":
1822
- return _context2.stop();
1918
+ return _context3.stop();
1823
1919
  }
1824
- }, _callee2);
1920
+ }, _callee3);
1825
1921
  }));
1826
1922
  return function handleCreateRecording() {
1827
- return _ref3.apply(this, arguments);
1923
+ return _ref4.apply(this, arguments);
1828
1924
  };
1829
1925
  }();
1926
+ var handleStopRecording = function handleStopRecording() {
1927
+ if (upload) {
1928
+ copyRecordingLinkToClipboardOnStop({
1929
+ createRecordingPromise: createRecordingPromise,
1930
+ recordingRef: recordingRef,
1931
+ baseURLRef: baseURLRef,
1932
+ successMessage: t("neetoMediaRecorder.record.copyToClipboardToastrMessage")
1933
+ });
1934
+ }
1935
+ screenRecorder.stopRecording();
1936
+ };
1830
1937
  var handleUploadComplete = function handleUploadComplete() {
1831
1938
  var _recordingRef$current;
1832
1939
  return onUploadComplete((_recordingRef$current = recordingRef.current) === null || _recordingRef$current === void 0 ? void 0 : _recordingRef$current.id);
1833
1940
  };
1834
1941
  var handleDiscardRecording = /*#__PURE__*/function () {
1835
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
1836
- var _ref6,
1837
- _ref6$forceAbort,
1942
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
1943
+ var _ref7,
1944
+ _ref7$forceAbort,
1838
1945
  forceAbort,
1839
1946
  multipartS3Uploader,
1840
- _args3 = arguments;
1841
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1842
- while (1) switch (_context3.prev = _context3.next) {
1947
+ _args4 = arguments;
1948
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
1949
+ while (1) switch (_context4.prev = _context4.next) {
1843
1950
  case 0:
1844
- _ref6 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, _ref6$forceAbort = _ref6.forceAbort, forceAbort = _ref6$forceAbort === void 0 ? false : _ref6$forceAbort;
1951
+ _ref7 = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {}, _ref7$forceAbort = _ref7.forceAbort, forceAbort = _ref7$forceAbort === void 0 ? false : _ref7$forceAbort;
1845
1952
  if (upload) {
1846
- _context3.next = 4;
1953
+ _context4.next = 4;
1847
1954
  break;
1848
1955
  }
1849
1956
  onDiscard();
1850
- return _context3.abrupt("return");
1957
+ return _context4.abrupt("return");
1851
1958
  case 4:
1852
1959
  multipartS3Uploader = getMultipartS3Uploader();
1853
- _context3.next = 7;
1960
+ _context4.next = 7;
1854
1961
  return multipartS3Uploader.abortUpload(forceAbort);
1855
1962
  case 7:
1856
1963
  if (!(multipartS3Uploader.status === UPLOAD_STATUS$1.aborting)) {
1857
- _context3.next = 9;
1964
+ _context4.next = 9;
1858
1965
  break;
1859
1966
  }
1860
- return _context3.abrupt("return");
1967
+ return _context4.abrupt("return");
1861
1968
  case 9:
1862
1969
  onDiscard();
1863
1970
  case 10:
1864
1971
  case "end":
1865
- return _context3.stop();
1972
+ return _context4.stop();
1866
1973
  }
1867
- }, _callee3);
1974
+ }, _callee4);
1868
1975
  }));
1869
1976
  return function handleDiscardRecording() {
1870
- return _ref5.apply(this, arguments);
1977
+ return _ref6.apply(this, arguments);
1871
1978
  };
1872
1979
  }();
1873
1980
  var handleRestartRecording = function handleRestartRecording() {
@@ -1942,25 +2049,25 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1942
2049
  var multipartS3Uploader = upload ? getMultipartS3Uploader({
1943
2050
  initialize: true
1944
2051
  }) : null;
1945
- var recorderCallbacks = (_recorderCallbacks = {}, _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onDataAvailable, upload ? multipartS3Uploader.push : noop), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onStop, _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
2052
+ var recorderCallbacks = (_recorderCallbacks = {}, _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onDataAvailable, upload ? multipartS3Uploader.push : noop), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onStop, _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
1946
2053
  var blob;
1947
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
1948
- while (1) switch (_context4.prev = _context4.next) {
2054
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
2055
+ while (1) switch (_context5.prev = _context5.next) {
1949
2056
  case 0:
1950
2057
  if (upload) {
1951
- _context4.next = 5;
2058
+ _context5.next = 5;
1952
2059
  break;
1953
2060
  }
1954
2061
  blob = screenRecorder.getWebmMediaBlob();
1955
2062
  RequestedRecordingCallback(blob);
1956
2063
  onRecordingCompleted(blob);
1957
- return _context4.abrupt("return");
2064
+ return _context5.abrupt("return");
1958
2065
  case 5:
1959
2066
  if (!createRecordingPromise.current) {
1960
- _context4.next = 9;
2067
+ _context5.next = 9;
1961
2068
  break;
1962
2069
  }
1963
- _context4.next = 8;
2070
+ _context5.next = 8;
1964
2071
  return createRecordingPromise.current;
1965
2072
  case 8:
1966
2073
  createRecordingPromise.current = null;
@@ -1968,9 +2075,9 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1968
2075
  multipartS3Uploader.completeUpload();
1969
2076
  case 10:
1970
2077
  case "end":
1971
- return _context4.stop();
2078
+ return _context5.stop();
1972
2079
  }
1973
- }, _callee4);
2080
+ }, _callee5);
1974
2081
  }))), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onDiscard, handleDiscardRecording), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onRestart, handleRestartRecording), _recorderCallbacks);
1975
2082
  Object.keys(recorderCallbacks).forEach(function (key) {
1976
2083
  screenRecorder.addCallback(key, recorderCallbacks[key]);
@@ -2023,6 +2130,7 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
2023
2130
  }
2024
2131
  if (isRetryUpload || isRecorderStatus(SCREEN_RECORDER_STATUS.stopped) && (isCreatingRecording || isBeingUploadedOrHasErrorUploading)) {
2025
2132
  return /*#__PURE__*/jsx(UploadingInProgress, {
2133
+ baseURL: baseURL,
2026
2134
  isRetryUpload: isRetryUpload,
2027
2135
  recording: recording,
2028
2136
  uploadProgress: uploadProgress,
@@ -2058,7 +2166,8 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
2058
2166
  onDiscard: onDiscard,
2059
2167
  requested: requested,
2060
2168
  setIsDiscardAlertOpen: setIsDiscardAlertOpen,
2061
- setIsRestartAlertOpen: setIsRestartAlertOpen
2169
+ setIsRestartAlertOpen: setIsRestartAlertOpen,
2170
+ onStopRecording: handleStopRecording
2062
2171
  }), /*#__PURE__*/jsx(Alert, {
2063
2172
  isOpen: isDiscardAlertOpen,
2064
2173
  message: t("neetoMediaRecorder.record.discardConfirmation.message"),
@@ -2076,7 +2185,7 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
2076
2185
  })]
2077
2186
  });
2078
2187
  };
2079
- var index = /*#__PURE__*/forwardRef(MediaRecorder);
2188
+ var index = /*#__PURE__*/forwardRef(MediaRecorder$1);
2080
2189
 
2081
2190
  export { index as MediaRecorder };
2082
2191
  //# sourceMappingURL=index.js.map