@bigbinary/neeto-molecules 1.15.34 → 1.15.35
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.
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { _ as _extends } from './extends-093996c9.js';
|
|
2
|
+
import { _ as _defineProperty } from './defineProperty-549061a7.js';
|
|
3
|
+
import { _ as _slicedToArray } from './slicedToArray-b4278ecd.js';
|
|
4
|
+
import { _ as _objectWithoutProperties } from './objectWithoutProperties-a0edb288.js';
|
|
5
|
+
import React__default, { useState, useEffect } from 'react';
|
|
6
|
+
import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
|
|
7
|
+
import { Modal, Typography, Spinner, Tooltip, Checkbox, Button, Input } from '@bigbinary/neetoui';
|
|
8
|
+
import { not } from 'ramda';
|
|
9
|
+
import { useTranslation } from 'react-i18next';
|
|
10
|
+
import CopyToClipboardButton from './CopyToClipboardButton.js';
|
|
11
|
+
import { n } from './inject-css-c86de496.js';
|
|
12
|
+
import 'classnames';
|
|
13
|
+
import '@bigbinary/neeto-commons-frontend/utils/general';
|
|
14
|
+
import '@bigbinary/neeto-icons';
|
|
15
|
+
|
|
16
|
+
var ONE_SECOND = 1;
|
|
17
|
+
var ONE_MINUTE = 60 * ONE_SECOND;
|
|
18
|
+
var ONE_HOUR = 60 * ONE_MINUTE;
|
|
19
|
+
|
|
20
|
+
var css = ".neeto-molecules-share-timestamp-input .neeto-ui-input__wrapper{position:relative}.neeto-molecules-share-timestamp-input .neeto-ui-input__wrapper:not(:last-child):after{content:\":\";font-weight:bolder;position:absolute;right:-8px;top:4px}";
|
|
21
|
+
n(css,{});
|
|
22
|
+
|
|
23
|
+
var getTimeValues = function getTimeValues(playbackTimeInSec) {
|
|
24
|
+
var hour = Math.floor(playbackTimeInSec / ONE_HOUR);
|
|
25
|
+
playbackTimeInSec = playbackTimeInSec % ONE_HOUR;
|
|
26
|
+
var minute = Math.floor(playbackTimeInSec / ONE_MINUTE);
|
|
27
|
+
playbackTimeInSec = playbackTimeInSec % ONE_MINUTE;
|
|
28
|
+
var second = Math.floor(playbackTimeInSec / ONE_SECOND);
|
|
29
|
+
return {
|
|
30
|
+
hour: hour,
|
|
31
|
+
minute: minute,
|
|
32
|
+
second: second
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
var padZero = function padZero(number) {
|
|
36
|
+
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
37
|
+
var string = String(number);
|
|
38
|
+
var threshold = Math.pow(10, length - 1);
|
|
39
|
+
if (number < threshold) {
|
|
40
|
+
while (String(threshold).length > string.length) {
|
|
41
|
+
string = "0".concat(number);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return string;
|
|
45
|
+
};
|
|
46
|
+
var shouldRenderHoursInput = function shouldRenderHoursInput(duration) {
|
|
47
|
+
var hours = Math.floor(duration / ONE_HOUR);
|
|
48
|
+
return hours > 0;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var _excluded = ["recordingUrl", "totalDuration", "currentTimestamp", "buttonProps", "isLoading"];
|
|
52
|
+
function ownKeys(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; }
|
|
53
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
54
|
+
var ShareRecording = function ShareRecording(_ref) {
|
|
55
|
+
var recordingUrl = _ref.recordingUrl,
|
|
56
|
+
totalDuration = _ref.totalDuration,
|
|
57
|
+
currentTimestamp = _ref.currentTimestamp,
|
|
58
|
+
_ref$buttonProps = _ref.buttonProps,
|
|
59
|
+
buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
|
|
60
|
+
_ref$isLoading = _ref.isLoading,
|
|
61
|
+
isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
|
|
62
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
63
|
+
var _useTranslation = useTranslation(),
|
|
64
|
+
t = _useTranslation.t;
|
|
65
|
+
var _useState = useState(false),
|
|
66
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
67
|
+
isOpen = _useState2[0],
|
|
68
|
+
setIsOpen = _useState2[1];
|
|
69
|
+
var _useState3 = useState(""),
|
|
70
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
71
|
+
shareLink = _useState4[0],
|
|
72
|
+
setShareLink = _useState4[1];
|
|
73
|
+
var _useState5 = useState(0),
|
|
74
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
75
|
+
currentPlaybackTime = _useState6[0],
|
|
76
|
+
setCurrentPlaybackTime = _useState6[1];
|
|
77
|
+
var _useState7 = useState(currentTimestamp > 0),
|
|
78
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
79
|
+
isPlaybackTimeCheckboxChecked = _useState8[0],
|
|
80
|
+
setIsPlaybackTimeCheckboxChecked = _useState8[1];
|
|
81
|
+
var _getTimeValues = getTimeValues(currentPlaybackTime),
|
|
82
|
+
hour = _getTimeValues.hour,
|
|
83
|
+
minute = _getTimeValues.minute,
|
|
84
|
+
second = _getTimeValues.second;
|
|
85
|
+
var handlePlaybackTimestampChange = function handlePlaybackTimestampChange(_ref2) {
|
|
86
|
+
var valueInSec = _ref2.valueInSec,
|
|
87
|
+
offset = _ref2.offset;
|
|
88
|
+
var intendedTimeInSec = currentPlaybackTime + valueInSec - offset;
|
|
89
|
+
setCurrentPlaybackTime(Math.min(intendedTimeInSec, totalDuration));
|
|
90
|
+
};
|
|
91
|
+
var handleClick = function handleClick() {
|
|
92
|
+
var _buttonProps$onClick;
|
|
93
|
+
setIsOpen(true);
|
|
94
|
+
buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$onClick = buttonProps.onClick) === null || _buttonProps$onClick === void 0 ? void 0 : _buttonProps$onClick.call(buttonProps);
|
|
95
|
+
};
|
|
96
|
+
var renderTimeInput = function renderTimeInput(_ref3) {
|
|
97
|
+
var value = _ref3.value,
|
|
98
|
+
onChange = _ref3.onChange,
|
|
99
|
+
max = _ref3.max;
|
|
100
|
+
return /*#__PURE__*/React__default.createElement(Input, {
|
|
101
|
+
max: max,
|
|
102
|
+
onChange: onChange,
|
|
103
|
+
value: value,
|
|
104
|
+
className: "w-14",
|
|
105
|
+
disabled: not(isPlaybackTimeCheckboxChecked),
|
|
106
|
+
min: 0,
|
|
107
|
+
type: "number",
|
|
108
|
+
unlimitedChars: false
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
useEffect(function () {
|
|
112
|
+
if (not(isOpen)) return;
|
|
113
|
+
setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);
|
|
114
|
+
setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
|
|
115
|
+
}, [isOpen]);
|
|
116
|
+
useEffect(function () {
|
|
117
|
+
var playbackUrl = buildUrl(recordingUrl, _objectSpread({}, isPlaybackTimeCheckboxChecked && currentPlaybackTime > 0 && {
|
|
118
|
+
t: currentPlaybackTime
|
|
119
|
+
}));
|
|
120
|
+
setShareLink(playbackUrl);
|
|
121
|
+
}, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);
|
|
122
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Modal, _extends({}, _objectSpread({
|
|
123
|
+
isOpen: isOpen
|
|
124
|
+
}, otherProps), {
|
|
125
|
+
"data-cy": "share-modal",
|
|
126
|
+
size: "large",
|
|
127
|
+
onClose: function onClose() {
|
|
128
|
+
return setIsOpen(false);
|
|
129
|
+
}
|
|
130
|
+
}), /*#__PURE__*/React__default.createElement(Modal.Header, null, /*#__PURE__*/React__default.createElement(Typography, {
|
|
131
|
+
style: "h2"
|
|
132
|
+
}, t("neetoMolecules.shareRecording.title"))), /*#__PURE__*/React__default.createElement(Modal.Body, {
|
|
133
|
+
className: "flex flex-col space-y-2"
|
|
134
|
+
}, isLoading ? /*#__PURE__*/React__default.createElement(Spinner, {
|
|
135
|
+
className: "mx-auto"
|
|
136
|
+
}) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
137
|
+
className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex items-center justify-between p-2"
|
|
138
|
+
}, /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
139
|
+
content: shareLink
|
|
140
|
+
}, /*#__PURE__*/React__default.createElement(Typography, {
|
|
141
|
+
className: "truncate",
|
|
142
|
+
style: "body2"
|
|
143
|
+
}, shareLink)), /*#__PURE__*/React__default.createElement(CopyToClipboardButton, {
|
|
144
|
+
className: "flex-shrink-0",
|
|
145
|
+
style: "secondary",
|
|
146
|
+
value: shareLink
|
|
147
|
+
})), /*#__PURE__*/React__default.createElement("div", {
|
|
148
|
+
className: "flex items-center gap-x-2"
|
|
149
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
|
150
|
+
checked: isPlaybackTimeCheckboxChecked,
|
|
151
|
+
className: "grow-0",
|
|
152
|
+
"data-cy": "time-checkbox",
|
|
153
|
+
label: t("neetoMolecules.shareRecording.checkboxLabel"),
|
|
154
|
+
onChange: function onChange(_ref4) {
|
|
155
|
+
var checked = _ref4.target.checked;
|
|
156
|
+
return setIsPlaybackTimeCheckboxChecked(checked);
|
|
157
|
+
}
|
|
158
|
+
}), /*#__PURE__*/React__default.createElement("div", {
|
|
159
|
+
className: "neeto-molecules-share-timestamp-input flex items-center gap-x-3",
|
|
160
|
+
"data-cy": "time-inputs"
|
|
161
|
+
}, shouldRenderHoursInput(totalDuration) && renderTimeInput({
|
|
162
|
+
max: 99,
|
|
163
|
+
value: padZero(hour),
|
|
164
|
+
onChange: function onChange(e) {
|
|
165
|
+
return handlePlaybackTimestampChange({
|
|
166
|
+
valueInSec: e.target.value * ONE_HOUR,
|
|
167
|
+
offset: hour * ONE_HOUR
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}), renderTimeInput({
|
|
171
|
+
max: 59,
|
|
172
|
+
value: padZero(minute),
|
|
173
|
+
onChange: function onChange(e) {
|
|
174
|
+
return handlePlaybackTimestampChange({
|
|
175
|
+
valueInSec: e.target.value * ONE_MINUTE,
|
|
176
|
+
offset: minute * ONE_MINUTE
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}), renderTimeInput({
|
|
180
|
+
max: 59,
|
|
181
|
+
value: padZero(second),
|
|
182
|
+
onChange: function onChange(e) {
|
|
183
|
+
return handlePlaybackTimestampChange({
|
|
184
|
+
valueInSec: e.target.value * ONE_SECOND,
|
|
185
|
+
offset: second * ONE_SECOND
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
})))))), /*#__PURE__*/React__default.createElement(Button, _extends({
|
|
189
|
+
"data-cy": "share-button",
|
|
190
|
+
label: t("neetoMolecules.common.actions.share"),
|
|
191
|
+
style: "secondary"
|
|
192
|
+
}, buttonProps, {
|
|
193
|
+
onClick: handleClick
|
|
194
|
+
})));
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
export { ShareRecording as default };
|
|
198
|
+
//# sourceMappingURL=ShareRecording.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareRecording.js","sources":["../src/components/ShareRecording/constants.js","../src/components/ShareRecording/utils.js","../src/components/ShareRecording/index.jsx"],"sourcesContent":["export const ONE_SECOND = 1;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\n","import { ONE_HOUR, ONE_MINUTE, ONE_SECOND } from \"./constants\";\n\nexport const getTimeValues = playbackTimeInSec => {\n const hour = Math.floor(playbackTimeInSec / ONE_HOUR);\n playbackTimeInSec = playbackTimeInSec % ONE_HOUR;\n const minute = Math.floor(playbackTimeInSec / ONE_MINUTE);\n playbackTimeInSec = playbackTimeInSec % ONE_MINUTE;\n const second = Math.floor(playbackTimeInSec / ONE_SECOND);\n\n return { hour, minute, second };\n};\n\nexport const padZero = (number, length = 2) => {\n let string = String(number);\n const threshold = Math.pow(10, length - 1);\n\n if (number < threshold) {\n while (String(threshold).length > string.length) {\n string = `0${number}`;\n }\n }\n\n return string;\n};\n\nexport const shouldRenderHoursInput = duration => {\n const hours = Math.floor(duration / ONE_HOUR);\n\n return hours > 0;\n};\n","import React, { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport {\n Modal,\n Typography,\n Input,\n Checkbox,\n Tooltip,\n Spinner,\n Button,\n} from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport { ONE_HOUR, ONE_MINUTE, ONE_SECOND } from \"./constants\";\nimport \"./share-modal.scss\";\nimport { getTimeValues, padZero, shouldRenderHoursInput } from \"./utils\";\n\nconst ShareRecording = ({\n recordingUrl,\n totalDuration,\n currentTimestamp,\n buttonProps = {},\n isLoading = false,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n const [isOpen, setIsOpen] = useState(false);\n const [shareLink, setShareLink] = useState(\"\");\n const [currentPlaybackTime, setCurrentPlaybackTime] = useState(0);\n const [isPlaybackTimeCheckboxChecked, setIsPlaybackTimeCheckboxChecked] =\n useState(currentTimestamp > 0);\n\n const { hour, minute, second } = getTimeValues(currentPlaybackTime);\n\n const handlePlaybackTimestampChange = ({ valueInSec, offset }) => {\n const intendedTimeInSec = currentPlaybackTime + valueInSec - offset;\n\n setCurrentPlaybackTime(Math.min(intendedTimeInSec, totalDuration));\n };\n\n const handleClick = () => {\n setIsOpen(true);\n buttonProps?.onClick?.();\n };\n\n const renderTimeInput = ({ value, onChange, max }) => (\n <Input\n {...{ max, onChange, value }}\n className=\"w-14\"\n disabled={not(isPlaybackTimeCheckboxChecked)}\n min={0}\n type=\"number\"\n unlimitedChars={false}\n />\n );\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);\n setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n }, [isOpen]);\n\n useEffect(() => {\n const playbackUrl = buildUrl(recordingUrl, {\n ...(isPlaybackTimeCheckboxChecked &&\n currentPlaybackTime > 0 && { t: currentPlaybackTime }),\n });\n\n setShareLink(playbackUrl);\n }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);\n\n return (\n <>\n <Modal\n {...{ isOpen, ...otherProps }}\n data-cy=\"share-modal\"\n size=\"large\"\n onClose={() => setIsOpen(false)}\n >\n <Modal.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body className=\"flex flex-col space-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <>\n <div className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex items-center justify-between p-2\">\n <Tooltip content={shareLink}>\n <Typography className=\"truncate\" style=\"body2\">\n {shareLink}\n </Typography>\n </Tooltip>\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n style=\"secondary\"\n value={shareLink}\n />\n </div>\n <div className=\"flex items-center gap-x-2\">\n <Checkbox\n checked={isPlaybackTimeCheckboxChecked}\n className=\"grow-0\"\n data-cy=\"time-checkbox\"\n label={t(\"neetoMolecules.shareRecording.checkboxLabel\")}\n onChange={({ target: { checked } }) =>\n setIsPlaybackTimeCheckboxChecked(checked)\n }\n />\n <div\n className=\"neeto-molecules-share-timestamp-input flex items-center gap-x-3\"\n data-cy=\"time-inputs\"\n >\n {shouldRenderHoursInput(totalDuration) &&\n renderTimeInput({\n max: 99,\n value: padZero(hour),\n onChange: e =>\n handlePlaybackTimestampChange({\n valueInSec: e.target.value * ONE_HOUR,\n offset: hour * ONE_HOUR,\n }),\n })}\n {renderTimeInput({\n max: 59,\n value: padZero(minute),\n onChange: e =>\n handlePlaybackTimestampChange({\n valueInSec: e.target.value * ONE_MINUTE,\n offset: minute * ONE_MINUTE,\n }),\n })}\n {renderTimeInput({\n max: 59,\n value: padZero(second),\n onChange: e =>\n handlePlaybackTimestampChange({\n valueInSec: e.target.value * ONE_SECOND,\n offset: second * ONE_SECOND,\n }),\n })}\n </div>\n </div>\n </>\n )}\n </Modal.Body>\n </Modal>\n <Button\n data-cy=\"share-button\"\n label={t(\"neetoMolecules.common.actions.share\")}\n style=\"secondary\"\n {...buttonProps}\n onClick={handleClick}\n />\n </>\n );\n};\n\nShareRecording.propTypes = {\n /**\n * Recording URL used for building the share link.\n */\n recordingUrl: PropTypes.string.isRequired,\n /**\n * Total duration of the content being shared.\n */\n totalDuration: PropTypes.number.isRequired,\n /**\n * Current playback time of the recorded content in seconds.\n */\n currentTimestamp: PropTypes.number.isRequired,\n /**\n * Additional props for the button component.\n */\n buttonProps: PropTypes.object,\n /**\n * Boolean indicating whether content is loading or not.\n */\n isLoading: PropTypes.bool,\n};\n\nexport default ShareRecording;\n"],"names":["ONE_SECOND","ONE_MINUTE","ONE_HOUR","getTimeValues","playbackTimeInSec","hour","Math","floor","minute","second","padZero","number","length","arguments","undefined","string","String","threshold","pow","concat","shouldRenderHoursInput","duration","hours","ShareRecording","_ref","recordingUrl","totalDuration","currentTimestamp","_ref$buttonProps","buttonProps","_ref$isLoading","isLoading","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","_useState3","_useState4","shareLink","setShareLink","_useState5","_useState6","currentPlaybackTime","setCurrentPlaybackTime","_useState7","_useState8","isPlaybackTimeCheckboxChecked","setIsPlaybackTimeCheckboxChecked","_getTimeValues","handlePlaybackTimestampChange","_ref2","valueInSec","offset","intendedTimeInSec","min","handleClick","_buttonProps$onClick","onClick","call","renderTimeInput","_ref3","value","onChange","max","React","createElement","Input","className","disabled","not","type","unlimitedChars","useEffect","playbackUrl","buildUrl","_objectSpread","Fragment","Modal","_extends","size","onClose","Header","Typography","style","Body","Spinner","Tooltip","content","CopyToClipboardButton","Checkbox","checked","label","_ref4","target","e","Button"],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _extends = require('./extends-1b35a664.js');
|
|
4
|
+
var defineProperty = require('./defineProperty-886ed289.js');
|
|
5
|
+
var slicedToArray = require('./slicedToArray-f320d9e7.js');
|
|
6
|
+
var objectWithoutProperties = require('./objectWithoutProperties-2fed2d7d.js');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var utils = require('@bigbinary/neeto-commons-frontend/utils');
|
|
9
|
+
var neetoui = require('@bigbinary/neetoui');
|
|
10
|
+
var ramda = require('ramda');
|
|
11
|
+
var reactI18next = require('react-i18next');
|
|
12
|
+
var CopyToClipboardButton = require('./CopyToClipboardButton.js');
|
|
13
|
+
var injectCss = require('./inject-css-80a5faa3.js');
|
|
14
|
+
require('classnames');
|
|
15
|
+
require('@bigbinary/neeto-commons-frontend/utils/general');
|
|
16
|
+
require('@bigbinary/neeto-icons');
|
|
17
|
+
|
|
18
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
|
+
|
|
20
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
21
|
+
|
|
22
|
+
var ONE_SECOND = 1;
|
|
23
|
+
var ONE_MINUTE = 60 * ONE_SECOND;
|
|
24
|
+
var ONE_HOUR = 60 * ONE_MINUTE;
|
|
25
|
+
|
|
26
|
+
var css = ".neeto-molecules-share-timestamp-input .neeto-ui-input__wrapper{position:relative}.neeto-molecules-share-timestamp-input .neeto-ui-input__wrapper:not(:last-child):after{content:\":\";font-weight:bolder;position:absolute;right:-8px;top:4px}";
|
|
27
|
+
injectCss.n(css,{});
|
|
28
|
+
|
|
29
|
+
var getTimeValues = function getTimeValues(playbackTimeInSec) {
|
|
30
|
+
var hour = Math.floor(playbackTimeInSec / ONE_HOUR);
|
|
31
|
+
playbackTimeInSec = playbackTimeInSec % ONE_HOUR;
|
|
32
|
+
var minute = Math.floor(playbackTimeInSec / ONE_MINUTE);
|
|
33
|
+
playbackTimeInSec = playbackTimeInSec % ONE_MINUTE;
|
|
34
|
+
var second = Math.floor(playbackTimeInSec / ONE_SECOND);
|
|
35
|
+
return {
|
|
36
|
+
hour: hour,
|
|
37
|
+
minute: minute,
|
|
38
|
+
second: second
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
var padZero = function padZero(number) {
|
|
42
|
+
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
43
|
+
var string = String(number);
|
|
44
|
+
var threshold = Math.pow(10, length - 1);
|
|
45
|
+
if (number < threshold) {
|
|
46
|
+
while (String(threshold).length > string.length) {
|
|
47
|
+
string = "0".concat(number);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return string;
|
|
51
|
+
};
|
|
52
|
+
var shouldRenderHoursInput = function shouldRenderHoursInput(duration) {
|
|
53
|
+
var hours = Math.floor(duration / ONE_HOUR);
|
|
54
|
+
return hours > 0;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var _excluded = ["recordingUrl", "totalDuration", "currentTimestamp", "buttonProps", "isLoading"];
|
|
58
|
+
function ownKeys(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; }
|
|
59
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
60
|
+
var ShareRecording = function ShareRecording(_ref) {
|
|
61
|
+
var recordingUrl = _ref.recordingUrl,
|
|
62
|
+
totalDuration = _ref.totalDuration,
|
|
63
|
+
currentTimestamp = _ref.currentTimestamp,
|
|
64
|
+
_ref$buttonProps = _ref.buttonProps,
|
|
65
|
+
buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
|
|
66
|
+
_ref$isLoading = _ref.isLoading,
|
|
67
|
+
isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
|
|
68
|
+
otherProps = objectWithoutProperties._objectWithoutProperties(_ref, _excluded);
|
|
69
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
70
|
+
t = _useTranslation.t;
|
|
71
|
+
var _useState = React.useState(false),
|
|
72
|
+
_useState2 = slicedToArray._slicedToArray(_useState, 2),
|
|
73
|
+
isOpen = _useState2[0],
|
|
74
|
+
setIsOpen = _useState2[1];
|
|
75
|
+
var _useState3 = React.useState(""),
|
|
76
|
+
_useState4 = slicedToArray._slicedToArray(_useState3, 2),
|
|
77
|
+
shareLink = _useState4[0],
|
|
78
|
+
setShareLink = _useState4[1];
|
|
79
|
+
var _useState5 = React.useState(0),
|
|
80
|
+
_useState6 = slicedToArray._slicedToArray(_useState5, 2),
|
|
81
|
+
currentPlaybackTime = _useState6[0],
|
|
82
|
+
setCurrentPlaybackTime = _useState6[1];
|
|
83
|
+
var _useState7 = React.useState(currentTimestamp > 0),
|
|
84
|
+
_useState8 = slicedToArray._slicedToArray(_useState7, 2),
|
|
85
|
+
isPlaybackTimeCheckboxChecked = _useState8[0],
|
|
86
|
+
setIsPlaybackTimeCheckboxChecked = _useState8[1];
|
|
87
|
+
var _getTimeValues = getTimeValues(currentPlaybackTime),
|
|
88
|
+
hour = _getTimeValues.hour,
|
|
89
|
+
minute = _getTimeValues.minute,
|
|
90
|
+
second = _getTimeValues.second;
|
|
91
|
+
var handlePlaybackTimestampChange = function handlePlaybackTimestampChange(_ref2) {
|
|
92
|
+
var valueInSec = _ref2.valueInSec,
|
|
93
|
+
offset = _ref2.offset;
|
|
94
|
+
var intendedTimeInSec = currentPlaybackTime + valueInSec - offset;
|
|
95
|
+
setCurrentPlaybackTime(Math.min(intendedTimeInSec, totalDuration));
|
|
96
|
+
};
|
|
97
|
+
var handleClick = function handleClick() {
|
|
98
|
+
var _buttonProps$onClick;
|
|
99
|
+
setIsOpen(true);
|
|
100
|
+
buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$onClick = buttonProps.onClick) === null || _buttonProps$onClick === void 0 ? void 0 : _buttonProps$onClick.call(buttonProps);
|
|
101
|
+
};
|
|
102
|
+
var renderTimeInput = function renderTimeInput(_ref3) {
|
|
103
|
+
var value = _ref3.value,
|
|
104
|
+
onChange = _ref3.onChange,
|
|
105
|
+
max = _ref3.max;
|
|
106
|
+
return /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
|
|
107
|
+
max: max,
|
|
108
|
+
onChange: onChange,
|
|
109
|
+
value: value,
|
|
110
|
+
className: "w-14",
|
|
111
|
+
disabled: ramda.not(isPlaybackTimeCheckboxChecked),
|
|
112
|
+
min: 0,
|
|
113
|
+
type: "number",
|
|
114
|
+
unlimitedChars: false
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
React.useEffect(function () {
|
|
118
|
+
if (ramda.not(isOpen)) return;
|
|
119
|
+
setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);
|
|
120
|
+
setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
|
|
121
|
+
}, [isOpen]);
|
|
122
|
+
React.useEffect(function () {
|
|
123
|
+
var playbackUrl = utils.buildUrl(recordingUrl, _objectSpread({}, isPlaybackTimeCheckboxChecked && currentPlaybackTime > 0 && {
|
|
124
|
+
t: currentPlaybackTime
|
|
125
|
+
}));
|
|
126
|
+
setShareLink(playbackUrl);
|
|
127
|
+
}, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);
|
|
128
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Modal, _extends._extends({}, _objectSpread({
|
|
129
|
+
isOpen: isOpen
|
|
130
|
+
}, otherProps), {
|
|
131
|
+
"data-cy": "share-modal",
|
|
132
|
+
size: "large",
|
|
133
|
+
onClose: function onClose() {
|
|
134
|
+
return setIsOpen(false);
|
|
135
|
+
}
|
|
136
|
+
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Modal.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
137
|
+
style: "h2"
|
|
138
|
+
}, t("neetoMolecules.shareRecording.title"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Modal.Body, {
|
|
139
|
+
className: "flex flex-col space-y-2"
|
|
140
|
+
}, isLoading ? /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, {
|
|
141
|
+
className: "mx-auto"
|
|
142
|
+
}) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
143
|
+
className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex items-center justify-between p-2"
|
|
144
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
|
|
145
|
+
content: shareLink
|
|
146
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
147
|
+
className: "truncate",
|
|
148
|
+
style: "body2"
|
|
149
|
+
}, shareLink)), /*#__PURE__*/React__default["default"].createElement(CopyToClipboardButton, {
|
|
150
|
+
className: "flex-shrink-0",
|
|
151
|
+
style: "secondary",
|
|
152
|
+
value: shareLink
|
|
153
|
+
})), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
154
|
+
className: "flex items-center gap-x-2"
|
|
155
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Checkbox, {
|
|
156
|
+
checked: isPlaybackTimeCheckboxChecked,
|
|
157
|
+
className: "grow-0",
|
|
158
|
+
"data-cy": "time-checkbox",
|
|
159
|
+
label: t("neetoMolecules.shareRecording.checkboxLabel"),
|
|
160
|
+
onChange: function onChange(_ref4) {
|
|
161
|
+
var checked = _ref4.target.checked;
|
|
162
|
+
return setIsPlaybackTimeCheckboxChecked(checked);
|
|
163
|
+
}
|
|
164
|
+
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
165
|
+
className: "neeto-molecules-share-timestamp-input flex items-center gap-x-3",
|
|
166
|
+
"data-cy": "time-inputs"
|
|
167
|
+
}, shouldRenderHoursInput(totalDuration) && renderTimeInput({
|
|
168
|
+
max: 99,
|
|
169
|
+
value: padZero(hour),
|
|
170
|
+
onChange: function onChange(e) {
|
|
171
|
+
return handlePlaybackTimestampChange({
|
|
172
|
+
valueInSec: e.target.value * ONE_HOUR,
|
|
173
|
+
offset: hour * ONE_HOUR
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}), renderTimeInput({
|
|
177
|
+
max: 59,
|
|
178
|
+
value: padZero(minute),
|
|
179
|
+
onChange: function onChange(e) {
|
|
180
|
+
return handlePlaybackTimestampChange({
|
|
181
|
+
valueInSec: e.target.value * ONE_MINUTE,
|
|
182
|
+
offset: minute * ONE_MINUTE
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}), renderTimeInput({
|
|
186
|
+
max: 59,
|
|
187
|
+
value: padZero(second),
|
|
188
|
+
onChange: function onChange(e) {
|
|
189
|
+
return handlePlaybackTimestampChange({
|
|
190
|
+
valueInSec: e.target.value * ONE_SECOND,
|
|
191
|
+
offset: second * ONE_SECOND
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
})))))), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends._extends({
|
|
195
|
+
"data-cy": "share-button",
|
|
196
|
+
label: t("neetoMolecules.common.actions.share"),
|
|
197
|
+
style: "secondary"
|
|
198
|
+
}, buttonProps, {
|
|
199
|
+
onClick: handleClick
|
|
200
|
+
})));
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
module.exports = ShareRecording;
|
|
204
|
+
//# sourceMappingURL=ShareRecording.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareRecording.js","sources":["../../src/components/ShareRecording/constants.js","../../src/components/ShareRecording/utils.js","../../src/components/ShareRecording/index.jsx"],"sourcesContent":["export const ONE_SECOND = 1;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\n","import { ONE_HOUR, ONE_MINUTE, ONE_SECOND } from \"./constants\";\n\nexport const getTimeValues = playbackTimeInSec => {\n const hour = Math.floor(playbackTimeInSec / ONE_HOUR);\n playbackTimeInSec = playbackTimeInSec % ONE_HOUR;\n const minute = Math.floor(playbackTimeInSec / ONE_MINUTE);\n playbackTimeInSec = playbackTimeInSec % ONE_MINUTE;\n const second = Math.floor(playbackTimeInSec / ONE_SECOND);\n\n return { hour, minute, second };\n};\n\nexport const padZero = (number, length = 2) => {\n let string = String(number);\n const threshold = Math.pow(10, length - 1);\n\n if (number < threshold) {\n while (String(threshold).length > string.length) {\n string = `0${number}`;\n }\n }\n\n return string;\n};\n\nexport const shouldRenderHoursInput = duration => {\n const hours = Math.floor(duration / ONE_HOUR);\n\n return hours > 0;\n};\n","import React, { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport {\n Modal,\n Typography,\n Input,\n Checkbox,\n Tooltip,\n Spinner,\n Button,\n} from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport { ONE_HOUR, ONE_MINUTE, ONE_SECOND } from \"./constants\";\nimport \"./share-modal.scss\";\nimport { getTimeValues, padZero, shouldRenderHoursInput } from \"./utils\";\n\nconst ShareRecording = ({\n recordingUrl,\n totalDuration,\n currentTimestamp,\n buttonProps = {},\n isLoading = false,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n const [isOpen, setIsOpen] = useState(false);\n const [shareLink, setShareLink] = useState(\"\");\n const [currentPlaybackTime, setCurrentPlaybackTime] = useState(0);\n const [isPlaybackTimeCheckboxChecked, setIsPlaybackTimeCheckboxChecked] =\n useState(currentTimestamp > 0);\n\n const { hour, minute, second } = getTimeValues(currentPlaybackTime);\n\n const handlePlaybackTimestampChange = ({ valueInSec, offset }) => {\n const intendedTimeInSec = currentPlaybackTime + valueInSec - offset;\n\n setCurrentPlaybackTime(Math.min(intendedTimeInSec, totalDuration));\n };\n\n const handleClick = () => {\n setIsOpen(true);\n buttonProps?.onClick?.();\n };\n\n const renderTimeInput = ({ value, onChange, max }) => (\n <Input\n {...{ max, onChange, value }}\n className=\"w-14\"\n disabled={not(isPlaybackTimeCheckboxChecked)}\n min={0}\n type=\"number\"\n unlimitedChars={false}\n />\n );\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);\n setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n }, [isOpen]);\n\n useEffect(() => {\n const playbackUrl = buildUrl(recordingUrl, {\n ...(isPlaybackTimeCheckboxChecked &&\n currentPlaybackTime > 0 && { t: currentPlaybackTime }),\n });\n\n setShareLink(playbackUrl);\n }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);\n\n return (\n <>\n <Modal\n {...{ isOpen, ...otherProps }}\n data-cy=\"share-modal\"\n size=\"large\"\n onClose={() => setIsOpen(false)}\n >\n <Modal.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body className=\"flex flex-col space-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <>\n <div className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex items-center justify-between p-2\">\n <Tooltip content={shareLink}>\n <Typography className=\"truncate\" style=\"body2\">\n {shareLink}\n </Typography>\n </Tooltip>\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n style=\"secondary\"\n value={shareLink}\n />\n </div>\n <div className=\"flex items-center gap-x-2\">\n <Checkbox\n checked={isPlaybackTimeCheckboxChecked}\n className=\"grow-0\"\n data-cy=\"time-checkbox\"\n label={t(\"neetoMolecules.shareRecording.checkboxLabel\")}\n onChange={({ target: { checked } }) =>\n setIsPlaybackTimeCheckboxChecked(checked)\n }\n />\n <div\n className=\"neeto-molecules-share-timestamp-input flex items-center gap-x-3\"\n data-cy=\"time-inputs\"\n >\n {shouldRenderHoursInput(totalDuration) &&\n renderTimeInput({\n max: 99,\n value: padZero(hour),\n onChange: e =>\n handlePlaybackTimestampChange({\n valueInSec: e.target.value * ONE_HOUR,\n offset: hour * ONE_HOUR,\n }),\n })}\n {renderTimeInput({\n max: 59,\n value: padZero(minute),\n onChange: e =>\n handlePlaybackTimestampChange({\n valueInSec: e.target.value * ONE_MINUTE,\n offset: minute * ONE_MINUTE,\n }),\n })}\n {renderTimeInput({\n max: 59,\n value: padZero(second),\n onChange: e =>\n handlePlaybackTimestampChange({\n valueInSec: e.target.value * ONE_SECOND,\n offset: second * ONE_SECOND,\n }),\n })}\n </div>\n </div>\n </>\n )}\n </Modal.Body>\n </Modal>\n <Button\n data-cy=\"share-button\"\n label={t(\"neetoMolecules.common.actions.share\")}\n style=\"secondary\"\n {...buttonProps}\n onClick={handleClick}\n />\n </>\n );\n};\n\nShareRecording.propTypes = {\n /**\n * Recording URL used for building the share link.\n */\n recordingUrl: PropTypes.string.isRequired,\n /**\n * Total duration of the content being shared.\n */\n totalDuration: PropTypes.number.isRequired,\n /**\n * Current playback time of the recorded content in seconds.\n */\n currentTimestamp: PropTypes.number.isRequired,\n /**\n * Additional props for the button component.\n */\n buttonProps: PropTypes.object,\n /**\n * Boolean indicating whether content is loading or not.\n */\n isLoading: PropTypes.bool,\n};\n\nexport default ShareRecording;\n"],"names":["ONE_SECOND","ONE_MINUTE","ONE_HOUR","getTimeValues","playbackTimeInSec","hour","Math","floor","minute","second","padZero","number","length","arguments","undefined","string","String","threshold","pow","concat","shouldRenderHoursInput","duration","hours","ShareRecording","_ref","recordingUrl","totalDuration","currentTimestamp","_ref$buttonProps","buttonProps","_ref$isLoading","isLoading","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","_useState3","_useState4","shareLink","setShareLink","_useState5","_useState6","currentPlaybackTime","setCurrentPlaybackTime","_useState7","_useState8","isPlaybackTimeCheckboxChecked","setIsPlaybackTimeCheckboxChecked","_getTimeValues","handlePlaybackTimestampChange","_ref2","valueInSec","offset","intendedTimeInSec","min","handleClick","_buttonProps$onClick","onClick","call","renderTimeInput","_ref3","value","onChange","max","React","createElement","Input","className","disabled","not","type","unlimitedChars","useEffect","playbackUrl","buildUrl","_objectSpread","Fragment","Modal","_extends","size","onClose","Header","Typography","style","Body","Spinner","Tooltip","content","CopyToClipboardButton","Checkbox","checked","label","_ref4","target","e","Button"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-molecules",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.35",
|
|
4
4
|
"description": "A package of reusable molecular components for neeto products.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-molecules.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
package/src/translations/en.json
CHANGED
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"archive": "Archive",
|
|
30
30
|
"unArchive": "Unarchive",
|
|
31
31
|
"enable": "Enable",
|
|
32
|
-
"disable": "Disable"
|
|
32
|
+
"disable": "Disable",
|
|
33
|
+
"share": "Share"
|
|
33
34
|
},
|
|
34
35
|
"or": "or",
|
|
35
36
|
"name": "name",
|
|
@@ -762,6 +763,10 @@
|
|
|
762
763
|
},
|
|
763
764
|
"reactions": {
|
|
764
765
|
"content": "{{groupedNames, anyCase}} reacted."
|
|
766
|
+
},
|
|
767
|
+
"shareRecording": {
|
|
768
|
+
"title": "Share recording",
|
|
769
|
+
"checkboxLabel": "Start playback at"
|
|
765
770
|
}
|
|
766
771
|
}
|
|
767
772
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ButtonProps } from "@bigbinary/neetoui";
|
|
2
|
+
import React from "react";
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* The ShareRecording component provides a modal interface for sharing recordings.
|
|
6
|
+
*
|
|
7
|
+
* It includes options for specifying playback timestamps and generates shareable
|
|
8
|
+
*
|
|
9
|
+
* links accordingly. The modal interface allows users to copy the shareable link
|
|
10
|
+
*
|
|
11
|
+
* and adjust playback timestamps.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
*
|
|
15
|
+
* <ShareRecording
|
|
16
|
+
* recordingUrl="https://example.com/recording"
|
|
17
|
+
* totalDuration={3600} // Total duration in seconds (e.g., 1 hour)
|
|
18
|
+
* currentTimestamp={300} // Current playback time in seconds
|
|
19
|
+
* buttonProps={{
|
|
20
|
+
* onClick: () => {
|
|
21
|
+
* console.log("Share button has been clicked");
|
|
22
|
+
* },
|
|
23
|
+
* }}
|
|
24
|
+
* isLoading={false}
|
|
25
|
+
* />
|
|
26
|
+
* @endexample
|
|
27
|
+
*/
|
|
28
|
+
declare const ShareRecording: React.FC<{
|
|
29
|
+
recordingUrl: string;
|
|
30
|
+
totalDuration: number;
|
|
31
|
+
currentTimestamp: number;
|
|
32
|
+
buttonProps?: ButtonProps;
|
|
33
|
+
isLoading?: boolean;
|
|
34
|
+
}>;
|
|
35
|
+
export default ShareRecording;
|