@bigbinary/neeto-molecules 1.16.1 → 1.16.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.
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { _ as _extends } from './extends-093996c9.js';
|
|
2
|
+
import { _ as _defineProperty } from './defineProperty-549061a7.js';
|
|
3
|
+
import { _ as _objectWithoutProperties } from './objectWithoutProperties-a0edb288.js';
|
|
4
|
+
import React__default, { useState, useEffect } from 'react';
|
|
5
|
+
import { Tooltip, Typography, Checkbox, Input, Pane, Spinner } from '@bigbinary/neetoui';
|
|
6
|
+
import { useTranslation } from 'react-i18next';
|
|
7
|
+
import { _ as _slicedToArray } from './slicedToArray-b4278ecd.js';
|
|
8
|
+
import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
|
|
9
|
+
import { not } from 'ramda';
|
|
10
|
+
import CopyToClipboardButton from './CopyToClipboardButton.js';
|
|
11
|
+
import 'classnames';
|
|
12
|
+
import '@bigbinary/neeto-commons-frontend/utils/general';
|
|
13
|
+
import '@bigbinary/neeto-icons';
|
|
14
|
+
import './inject-css-c86de496.js';
|
|
15
|
+
|
|
16
|
+
var ONE_SECOND = 1;
|
|
17
|
+
var ONE_MINUTE = 60 * ONE_SECOND;
|
|
18
|
+
var ONE_HOUR = 60 * ONE_MINUTE;
|
|
19
|
+
|
|
20
|
+
var padZero = function padZero(number) {
|
|
21
|
+
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
22
|
+
var string = String(number);
|
|
23
|
+
var threshold = Math.pow(10, length - 1);
|
|
24
|
+
if (number < threshold) {
|
|
25
|
+
while (String(threshold).length > string.length) {
|
|
26
|
+
string = "0".concat(number);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return string;
|
|
30
|
+
};
|
|
31
|
+
var shouldRenderHoursInput = function shouldRenderHoursInput(duration) {
|
|
32
|
+
var hours = Math.floor(duration / ONE_HOUR);
|
|
33
|
+
return hours > 0;
|
|
34
|
+
};
|
|
35
|
+
var formatTime = function formatTime(timeInSeconds, showHours) {
|
|
36
|
+
var hours = Math.floor(timeInSeconds / ONE_HOUR);
|
|
37
|
+
var minutes = Math.floor(timeInSeconds % ONE_HOUR / ONE_MINUTE);
|
|
38
|
+
var seconds = timeInSeconds % ONE_MINUTE;
|
|
39
|
+
return showHours ? "".concat(padZero(hours), ":").concat(padZero(minutes), ":").concat(padZero(seconds)) : "".concat(padZero(minutes), ":").concat(padZero(seconds));
|
|
40
|
+
};
|
|
41
|
+
var parseTime = function parseTime(timeString) {
|
|
42
|
+
var parts = timeString.split(":").map(function (part) {
|
|
43
|
+
return part === "" ? NaN : parseInt(part, 10);
|
|
44
|
+
});
|
|
45
|
+
if (parts.some(isNaN) || parts.length > 3) {
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
if (parts.length === 1) {
|
|
49
|
+
return parts[0];
|
|
50
|
+
} else if (parts.length === 2) {
|
|
51
|
+
return parts[0] * ONE_MINUTE + parts[1];
|
|
52
|
+
} else if (parts.length === 3) {
|
|
53
|
+
return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];
|
|
54
|
+
}
|
|
55
|
+
return 0;
|
|
56
|
+
};
|
|
57
|
+
var validateInput = function validateInput(input) {
|
|
58
|
+
var regex = /^[0-9:]{0,8}$/;
|
|
59
|
+
var colons = (input.match(/:/g) || []).length;
|
|
60
|
+
return regex.test(input) && colons <= 2;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
function ownKeys$1(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; }
|
|
64
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
65
|
+
var SharePaneBody = function SharePaneBody(_ref) {
|
|
66
|
+
var recordingUrl = _ref.recordingUrl,
|
|
67
|
+
totalDuration = _ref.totalDuration,
|
|
68
|
+
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
69
|
+
isOpen = _ref.isOpen;
|
|
70
|
+
var _useTranslation = useTranslation(),
|
|
71
|
+
t = _useTranslation.t;
|
|
72
|
+
var currentTimestamp = getCurrentTimestamp();
|
|
73
|
+
var _useState = useState(""),
|
|
74
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
75
|
+
shareLink = _useState2[0],
|
|
76
|
+
setShareLink = _useState2[1];
|
|
77
|
+
var _useState3 = useState(currentTimestamp),
|
|
78
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
79
|
+
currentPlaybackTime = _useState4[0],
|
|
80
|
+
setCurrentPlaybackTime = _useState4[1];
|
|
81
|
+
var _useState5 = useState(""),
|
|
82
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
83
|
+
rawInput = _useState6[0],
|
|
84
|
+
setRawInput = _useState6[1];
|
|
85
|
+
var _useState7 = useState(currentTimestamp > 0),
|
|
86
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
87
|
+
isPlaybackTimeCheckboxChecked = _useState8[0],
|
|
88
|
+
setIsPlaybackTimeCheckboxChecked = _useState8[1];
|
|
89
|
+
var showHours = shouldRenderHoursInput(totalDuration);
|
|
90
|
+
var handlePlaybackTimestampChange = function handlePlaybackTimestampChange(e) {
|
|
91
|
+
var input = e.target.value;
|
|
92
|
+
if (validateInput(input)) {
|
|
93
|
+
setRawInput(input);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
var formatAndSetTime = function formatAndSetTime() {
|
|
97
|
+
var timeInSeconds = parseTime(rawInput);
|
|
98
|
+
if (timeInSeconds > totalDuration) {
|
|
99
|
+
timeInSeconds = totalDuration;
|
|
100
|
+
}
|
|
101
|
+
setCurrentPlaybackTime(timeInSeconds);
|
|
102
|
+
setRawInput(formatTime(timeInSeconds, showHours));
|
|
103
|
+
};
|
|
104
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
105
|
+
if (!(e.key === "Enter")) return;
|
|
106
|
+
formatAndSetTime();
|
|
107
|
+
};
|
|
108
|
+
useEffect(function () {
|
|
109
|
+
if (not(isOpen)) return;
|
|
110
|
+
setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);
|
|
111
|
+
setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
|
|
112
|
+
setRawInput(formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours));
|
|
113
|
+
}, [isOpen, showHours, currentTimestamp]);
|
|
114
|
+
useEffect(function () {
|
|
115
|
+
var playbackUrl = buildUrl(recordingUrl, _objectSpread$1({}, isPlaybackTimeCheckboxChecked && currentPlaybackTime > 0 && {
|
|
116
|
+
time: currentPlaybackTime
|
|
117
|
+
}));
|
|
118
|
+
setShareLink(playbackUrl);
|
|
119
|
+
}, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);
|
|
120
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
121
|
+
className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full items-center justify-between p-2"
|
|
122
|
+
}, /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
123
|
+
content: shareLink
|
|
124
|
+
}, /*#__PURE__*/React__default.createElement(Typography, {
|
|
125
|
+
className: "truncate",
|
|
126
|
+
style: "body2"
|
|
127
|
+
}, shareLink)), /*#__PURE__*/React__default.createElement(CopyToClipboardButton, {
|
|
128
|
+
className: "flex-shrink-0",
|
|
129
|
+
style: "secondary",
|
|
130
|
+
value: shareLink
|
|
131
|
+
})), /*#__PURE__*/React__default.createElement("div", {
|
|
132
|
+
className: "flex items-center gap-x-2"
|
|
133
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
|
134
|
+
checked: isPlaybackTimeCheckboxChecked,
|
|
135
|
+
className: "grow-0",
|
|
136
|
+
"data-cy": "time-checkbox",
|
|
137
|
+
label: t("neetoMolecules.shareRecording.checkboxLabel"),
|
|
138
|
+
onChange: function onChange(_ref2) {
|
|
139
|
+
var checked = _ref2.target.checked;
|
|
140
|
+
return setIsPlaybackTimeCheckboxChecked(checked);
|
|
141
|
+
}
|
|
142
|
+
}), /*#__PURE__*/React__default.createElement(Input, {
|
|
143
|
+
className: "w-40",
|
|
144
|
+
"data-cy": "time-input",
|
|
145
|
+
disabled: not(isPlaybackTimeCheckboxChecked),
|
|
146
|
+
placeholder: showHours ? "HH:MM:SS" : "MM:SS",
|
|
147
|
+
value: rawInput,
|
|
148
|
+
onBlur: formatAndSetTime,
|
|
149
|
+
onChange: handlePlaybackTimestampChange,
|
|
150
|
+
onKeyDown: handleKeyDown
|
|
151
|
+
})));
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
var _excluded = ["recordingUrl", "totalDuration", "getCurrentTimestamp", "isOpen", "onClose", "isLoading"];
|
|
155
|
+
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; }
|
|
156
|
+
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; }
|
|
157
|
+
var ShareRecordingPane = function ShareRecordingPane(_ref) {
|
|
158
|
+
var recordingUrl = _ref.recordingUrl,
|
|
159
|
+
totalDuration = _ref.totalDuration,
|
|
160
|
+
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
161
|
+
isOpen = _ref.isOpen,
|
|
162
|
+
onClose = _ref.onClose,
|
|
163
|
+
_ref$isLoading = _ref.isLoading,
|
|
164
|
+
isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
|
|
165
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
166
|
+
var _useTranslation = useTranslation(),
|
|
167
|
+
t = _useTranslation.t;
|
|
168
|
+
return /*#__PURE__*/React__default.createElement(Pane, _extends({}, _objectSpread({
|
|
169
|
+
isOpen: isOpen,
|
|
170
|
+
onClose: onClose
|
|
171
|
+
}, otherProps), {
|
|
172
|
+
"data-cy": "share-pane",
|
|
173
|
+
size: "large"
|
|
174
|
+
}), /*#__PURE__*/React__default.createElement(Pane.Header, null, /*#__PURE__*/React__default.createElement(Typography, {
|
|
175
|
+
style: "h2"
|
|
176
|
+
}, t("neetoMolecules.shareRecording.title"))), /*#__PURE__*/React__default.createElement(Pane.Body, {
|
|
177
|
+
className: "flex flex-col space-y-2"
|
|
178
|
+
}, isLoading ? /*#__PURE__*/React__default.createElement(Spinner, {
|
|
179
|
+
className: "mx-auto"
|
|
180
|
+
}) : /*#__PURE__*/React__default.createElement(SharePaneBody, {
|
|
181
|
+
getCurrentTimestamp: getCurrentTimestamp,
|
|
182
|
+
isOpen: isOpen,
|
|
183
|
+
recordingUrl: recordingUrl,
|
|
184
|
+
totalDuration: totalDuration
|
|
185
|
+
})));
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
export { ShareRecordingPane as default };
|
|
189
|
+
//# sourceMappingURL=ShareRecordingPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareRecordingPane.js","sources":["../src/components/ShareRecordingPane/constants.js","../src/components/ShareRecordingPane/utils.js","../src/components/ShareRecordingPane/SharePaneBody.jsx","../src/components/ShareRecordingPane/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 } from \"./constants\";\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\nexport const formatTime = (timeInSeconds, showHours) => {\n const hours = Math.floor(timeInSeconds / ONE_HOUR);\n const minutes = Math.floor((timeInSeconds % ONE_HOUR) / ONE_MINUTE);\n const seconds = timeInSeconds % ONE_MINUTE;\n\n return showHours\n ? `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`\n : `${padZero(minutes)}:${padZero(seconds)}`;\n};\n\nexport const parseTime = timeString => {\n const parts = timeString\n .split(\":\")\n .map(part => (part === \"\" ? NaN : parseInt(part, 10)));\n if (parts.some(isNaN) || parts.length > 3) {\n return 0;\n }\n\n if (parts.length === 1) {\n return parts[0];\n } else if (parts.length === 2) {\n return parts[0] * ONE_MINUTE + parts[1];\n } else if (parts.length === 3) {\n return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];\n }\n\n return 0;\n};\n\nexport const validateInput = input => {\n const regex = /^[0-9:]{0,8}$/;\n const colons = (input.match(/:/g) || []).length;\n\n return regex.test(input) && colons <= 2;\n};\n","import React, { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Typography, Input, Checkbox, Tooltip } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport {\n formatTime,\n parseTime,\n shouldRenderHoursInput,\n validateInput,\n} from \"./utils\";\n\nconst SharePaneBody = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n}) => {\n const { t } = useTranslation();\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLink, setShareLink] = useState(\"\");\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n const [rawInput, setRawInput] = useState(\"\");\n\n const [isPlaybackTimeCheckboxChecked, setIsPlaybackTimeCheckboxChecked] =\n useState(currentTimestamp > 0);\n\n const showHours = shouldRenderHoursInput(totalDuration);\n\n const handlePlaybackTimestampChange = e => {\n const input = e.target.value;\n if (validateInput(input)) {\n setRawInput(input);\n }\n };\n\n const formatAndSetTime = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setCurrentPlaybackTime(timeInSeconds);\n setRawInput(formatTime(timeInSeconds, showHours));\n };\n\n const handleKeyDown = e => {\n if (!(e.key === \"Enter\")) return;\n formatAndSetTime();\n };\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);\n setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n setRawInput(\n formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours)\n );\n }, [isOpen, showHours, currentTimestamp]);\n\n useEffect(() => {\n const playbackUrl = buildUrl(recordingUrl, {\n ...(isPlaybackTimeCheckboxChecked &&\n currentPlaybackTime > 0 && { time: currentPlaybackTime }),\n });\n\n setShareLink(playbackUrl);\n }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);\n\n return (\n <>\n <div className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full 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 <Input\n className=\"w-40\"\n data-cy=\"time-input\"\n disabled={not(isPlaybackTimeCheckboxChecked)}\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n </>\n );\n};\n\nexport default SharePaneBody;\n","/* eslint-disable @bigbinary/neeto/no-dumb-components-with-use-translation */\nimport React from \"react\";\n\nimport { Pane, Typography, Spinner } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SharePaneBody from \"./SharePaneBody\";\n\nconst ShareRecordingPane = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n return (\n <Pane\n {...{ isOpen, onClose, ...otherProps }}\n data-cy=\"share-pane\"\n size=\"large\"\n >\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col space-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{ getCurrentTimestamp, isOpen, recordingUrl, totalDuration }}\n />\n )}\n </Pane.Body>\n </Pane>\n );\n};\n\nShareRecordingPane.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 * A function that returns current playback time of the recorded content in seconds.\n */\n getCurrentTimestamp: PropTypes.func.isRequired,\n /**\n * Boolean indicating whether the pane is open or not.\n */\n isOpen: PropTypes.bool.isRequired,\n /**\n * Function to close the pane.\n */\n onClose: PropTypes.func.isRequired,\n /**\n * Boolean indicating whether content is loading or not.\n */\n isLoading: PropTypes.bool,\n};\n\nexport default ShareRecordingPane;\n"],"names":["ONE_SECOND","ONE_MINUTE","ONE_HOUR","padZero","number","length","arguments","undefined","string","String","threshold","Math","pow","concat","shouldRenderHoursInput","duration","hours","floor","formatTime","timeInSeconds","showHours","minutes","seconds","parseTime","timeString","parts","split","map","part","NaN","parseInt","some","isNaN","validateInput","input","regex","colons","match","test","SharePaneBody","_ref","recordingUrl","totalDuration","getCurrentTimestamp","isOpen","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLink","setShareLink","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","_useState6","rawInput","setRawInput","_useState7","_useState8","isPlaybackTimeCheckboxChecked","setIsPlaybackTimeCheckboxChecked","handlePlaybackTimestampChange","e","target","value","formatAndSetTime","handleKeyDown","key","useEffect","not","playbackUrl","buildUrl","_objectSpread","time","React","createElement","Fragment","className","Tooltip","content","Typography","style","CopyToClipboardButton","Checkbox","checked","label","onChange","_ref2","Input","disabled","placeholder","onBlur","onKeyDown","ShareRecordingPane","onClose","_ref$isLoading","isLoading","otherProps","_objectWithoutProperties","_excluded","Pane","_extends","size","Header","Body","Spinner"],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _extends = require('./extends-1b35a664.js');
|
|
4
|
+
var defineProperty = require('./defineProperty-886ed289.js');
|
|
5
|
+
var objectWithoutProperties = require('./objectWithoutProperties-2fed2d7d.js');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var neetoui = require('@bigbinary/neetoui');
|
|
8
|
+
var reactI18next = require('react-i18next');
|
|
9
|
+
var slicedToArray = require('./slicedToArray-f320d9e7.js');
|
|
10
|
+
var utils = require('@bigbinary/neeto-commons-frontend/utils');
|
|
11
|
+
var ramda = require('ramda');
|
|
12
|
+
var CopyToClipboardButton = require('./CopyToClipboardButton.js');
|
|
13
|
+
require('classnames');
|
|
14
|
+
require('@bigbinary/neeto-commons-frontend/utils/general');
|
|
15
|
+
require('@bigbinary/neeto-icons');
|
|
16
|
+
require('./inject-css-80a5faa3.js');
|
|
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 padZero = function padZero(number) {
|
|
27
|
+
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
28
|
+
var string = String(number);
|
|
29
|
+
var threshold = Math.pow(10, length - 1);
|
|
30
|
+
if (number < threshold) {
|
|
31
|
+
while (String(threshold).length > string.length) {
|
|
32
|
+
string = "0".concat(number);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return string;
|
|
36
|
+
};
|
|
37
|
+
var shouldRenderHoursInput = function shouldRenderHoursInput(duration) {
|
|
38
|
+
var hours = Math.floor(duration / ONE_HOUR);
|
|
39
|
+
return hours > 0;
|
|
40
|
+
};
|
|
41
|
+
var formatTime = function formatTime(timeInSeconds, showHours) {
|
|
42
|
+
var hours = Math.floor(timeInSeconds / ONE_HOUR);
|
|
43
|
+
var minutes = Math.floor(timeInSeconds % ONE_HOUR / ONE_MINUTE);
|
|
44
|
+
var seconds = timeInSeconds % ONE_MINUTE;
|
|
45
|
+
return showHours ? "".concat(padZero(hours), ":").concat(padZero(minutes), ":").concat(padZero(seconds)) : "".concat(padZero(minutes), ":").concat(padZero(seconds));
|
|
46
|
+
};
|
|
47
|
+
var parseTime = function parseTime(timeString) {
|
|
48
|
+
var parts = timeString.split(":").map(function (part) {
|
|
49
|
+
return part === "" ? NaN : parseInt(part, 10);
|
|
50
|
+
});
|
|
51
|
+
if (parts.some(isNaN) || parts.length > 3) {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
if (parts.length === 1) {
|
|
55
|
+
return parts[0];
|
|
56
|
+
} else if (parts.length === 2) {
|
|
57
|
+
return parts[0] * ONE_MINUTE + parts[1];
|
|
58
|
+
} else if (parts.length === 3) {
|
|
59
|
+
return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];
|
|
60
|
+
}
|
|
61
|
+
return 0;
|
|
62
|
+
};
|
|
63
|
+
var validateInput = function validateInput(input) {
|
|
64
|
+
var regex = /^[0-9:]{0,8}$/;
|
|
65
|
+
var colons = (input.match(/:/g) || []).length;
|
|
66
|
+
return regex.test(input) && colons <= 2;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
function ownKeys$1(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; }
|
|
70
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
71
|
+
var SharePaneBody = function SharePaneBody(_ref) {
|
|
72
|
+
var recordingUrl = _ref.recordingUrl,
|
|
73
|
+
totalDuration = _ref.totalDuration,
|
|
74
|
+
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
75
|
+
isOpen = _ref.isOpen;
|
|
76
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
77
|
+
t = _useTranslation.t;
|
|
78
|
+
var currentTimestamp = getCurrentTimestamp();
|
|
79
|
+
var _useState = React.useState(""),
|
|
80
|
+
_useState2 = slicedToArray._slicedToArray(_useState, 2),
|
|
81
|
+
shareLink = _useState2[0],
|
|
82
|
+
setShareLink = _useState2[1];
|
|
83
|
+
var _useState3 = React.useState(currentTimestamp),
|
|
84
|
+
_useState4 = slicedToArray._slicedToArray(_useState3, 2),
|
|
85
|
+
currentPlaybackTime = _useState4[0],
|
|
86
|
+
setCurrentPlaybackTime = _useState4[1];
|
|
87
|
+
var _useState5 = React.useState(""),
|
|
88
|
+
_useState6 = slicedToArray._slicedToArray(_useState5, 2),
|
|
89
|
+
rawInput = _useState6[0],
|
|
90
|
+
setRawInput = _useState6[1];
|
|
91
|
+
var _useState7 = React.useState(currentTimestamp > 0),
|
|
92
|
+
_useState8 = slicedToArray._slicedToArray(_useState7, 2),
|
|
93
|
+
isPlaybackTimeCheckboxChecked = _useState8[0],
|
|
94
|
+
setIsPlaybackTimeCheckboxChecked = _useState8[1];
|
|
95
|
+
var showHours = shouldRenderHoursInput(totalDuration);
|
|
96
|
+
var handlePlaybackTimestampChange = function handlePlaybackTimestampChange(e) {
|
|
97
|
+
var input = e.target.value;
|
|
98
|
+
if (validateInput(input)) {
|
|
99
|
+
setRawInput(input);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
var formatAndSetTime = function formatAndSetTime() {
|
|
103
|
+
var timeInSeconds = parseTime(rawInput);
|
|
104
|
+
if (timeInSeconds > totalDuration) {
|
|
105
|
+
timeInSeconds = totalDuration;
|
|
106
|
+
}
|
|
107
|
+
setCurrentPlaybackTime(timeInSeconds);
|
|
108
|
+
setRawInput(formatTime(timeInSeconds, showHours));
|
|
109
|
+
};
|
|
110
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
111
|
+
if (!(e.key === "Enter")) return;
|
|
112
|
+
formatAndSetTime();
|
|
113
|
+
};
|
|
114
|
+
React.useEffect(function () {
|
|
115
|
+
if (ramda.not(isOpen)) return;
|
|
116
|
+
setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);
|
|
117
|
+
setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
|
|
118
|
+
setRawInput(formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours));
|
|
119
|
+
}, [isOpen, showHours, currentTimestamp]);
|
|
120
|
+
React.useEffect(function () {
|
|
121
|
+
var playbackUrl = utils.buildUrl(recordingUrl, _objectSpread$1({}, isPlaybackTimeCheckboxChecked && currentPlaybackTime > 0 && {
|
|
122
|
+
time: currentPlaybackTime
|
|
123
|
+
}));
|
|
124
|
+
setShareLink(playbackUrl);
|
|
125
|
+
}, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);
|
|
126
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
127
|
+
className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full items-center justify-between p-2"
|
|
128
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, {
|
|
129
|
+
content: shareLink
|
|
130
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
131
|
+
className: "truncate",
|
|
132
|
+
style: "body2"
|
|
133
|
+
}, shareLink)), /*#__PURE__*/React__default["default"].createElement(CopyToClipboardButton, {
|
|
134
|
+
className: "flex-shrink-0",
|
|
135
|
+
style: "secondary",
|
|
136
|
+
value: shareLink
|
|
137
|
+
})), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
138
|
+
className: "flex items-center gap-x-2"
|
|
139
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Checkbox, {
|
|
140
|
+
checked: isPlaybackTimeCheckboxChecked,
|
|
141
|
+
className: "grow-0",
|
|
142
|
+
"data-cy": "time-checkbox",
|
|
143
|
+
label: t("neetoMolecules.shareRecording.checkboxLabel"),
|
|
144
|
+
onChange: function onChange(_ref2) {
|
|
145
|
+
var checked = _ref2.target.checked;
|
|
146
|
+
return setIsPlaybackTimeCheckboxChecked(checked);
|
|
147
|
+
}
|
|
148
|
+
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
|
|
149
|
+
className: "w-40",
|
|
150
|
+
"data-cy": "time-input",
|
|
151
|
+
disabled: ramda.not(isPlaybackTimeCheckboxChecked),
|
|
152
|
+
placeholder: showHours ? "HH:MM:SS" : "MM:SS",
|
|
153
|
+
value: rawInput,
|
|
154
|
+
onBlur: formatAndSetTime,
|
|
155
|
+
onChange: handlePlaybackTimestampChange,
|
|
156
|
+
onKeyDown: handleKeyDown
|
|
157
|
+
})));
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
var _excluded = ["recordingUrl", "totalDuration", "getCurrentTimestamp", "isOpen", "onClose", "isLoading"];
|
|
161
|
+
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; }
|
|
162
|
+
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; }
|
|
163
|
+
var ShareRecordingPane = function ShareRecordingPane(_ref) {
|
|
164
|
+
var recordingUrl = _ref.recordingUrl,
|
|
165
|
+
totalDuration = _ref.totalDuration,
|
|
166
|
+
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
167
|
+
isOpen = _ref.isOpen,
|
|
168
|
+
onClose = _ref.onClose,
|
|
169
|
+
_ref$isLoading = _ref.isLoading,
|
|
170
|
+
isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
|
|
171
|
+
otherProps = objectWithoutProperties._objectWithoutProperties(_ref, _excluded);
|
|
172
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
173
|
+
t = _useTranslation.t;
|
|
174
|
+
return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, _extends._extends({}, _objectSpread({
|
|
175
|
+
isOpen: isOpen,
|
|
176
|
+
onClose: onClose
|
|
177
|
+
}, otherProps), {
|
|
178
|
+
"data-cy": "share-pane",
|
|
179
|
+
size: "large"
|
|
180
|
+
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
181
|
+
style: "h2"
|
|
182
|
+
}, t("neetoMolecules.shareRecording.title"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, {
|
|
183
|
+
className: "flex flex-col space-y-2"
|
|
184
|
+
}, isLoading ? /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, {
|
|
185
|
+
className: "mx-auto"
|
|
186
|
+
}) : /*#__PURE__*/React__default["default"].createElement(SharePaneBody, {
|
|
187
|
+
getCurrentTimestamp: getCurrentTimestamp,
|
|
188
|
+
isOpen: isOpen,
|
|
189
|
+
recordingUrl: recordingUrl,
|
|
190
|
+
totalDuration: totalDuration
|
|
191
|
+
})));
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
module.exports = ShareRecordingPane;
|
|
195
|
+
//# sourceMappingURL=ShareRecordingPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareRecordingPane.js","sources":["../../src/components/ShareRecordingPane/constants.js","../../src/components/ShareRecordingPane/utils.js","../../src/components/ShareRecordingPane/SharePaneBody.jsx","../../src/components/ShareRecordingPane/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 } from \"./constants\";\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\nexport const formatTime = (timeInSeconds, showHours) => {\n const hours = Math.floor(timeInSeconds / ONE_HOUR);\n const minutes = Math.floor((timeInSeconds % ONE_HOUR) / ONE_MINUTE);\n const seconds = timeInSeconds % ONE_MINUTE;\n\n return showHours\n ? `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`\n : `${padZero(minutes)}:${padZero(seconds)}`;\n};\n\nexport const parseTime = timeString => {\n const parts = timeString\n .split(\":\")\n .map(part => (part === \"\" ? NaN : parseInt(part, 10)));\n if (parts.some(isNaN) || parts.length > 3) {\n return 0;\n }\n\n if (parts.length === 1) {\n return parts[0];\n } else if (parts.length === 2) {\n return parts[0] * ONE_MINUTE + parts[1];\n } else if (parts.length === 3) {\n return parts[0] * ONE_HOUR + parts[1] * ONE_MINUTE + parts[2];\n }\n\n return 0;\n};\n\nexport const validateInput = input => {\n const regex = /^[0-9:]{0,8}$/;\n const colons = (input.match(/:/g) || []).length;\n\n return regex.test(input) && colons <= 2;\n};\n","import React, { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Typography, Input, Checkbox, Tooltip } from \"neetoui\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport {\n formatTime,\n parseTime,\n shouldRenderHoursInput,\n validateInput,\n} from \"./utils\";\n\nconst SharePaneBody = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n}) => {\n const { t } = useTranslation();\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLink, setShareLink] = useState(\"\");\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n const [rawInput, setRawInput] = useState(\"\");\n\n const [isPlaybackTimeCheckboxChecked, setIsPlaybackTimeCheckboxChecked] =\n useState(currentTimestamp > 0);\n\n const showHours = shouldRenderHoursInput(totalDuration);\n\n const handlePlaybackTimestampChange = e => {\n const input = e.target.value;\n if (validateInput(input)) {\n setRawInput(input);\n }\n };\n\n const formatAndSetTime = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setCurrentPlaybackTime(timeInSeconds);\n setRawInput(formatTime(timeInSeconds, showHours));\n };\n\n const handleKeyDown = e => {\n if (!(e.key === \"Enter\")) return;\n formatAndSetTime();\n };\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n setIsPlaybackTimeCheckboxChecked(currentTimestamp > 0);\n setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n setRawInput(\n formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours)\n );\n }, [isOpen, showHours, currentTimestamp]);\n\n useEffect(() => {\n const playbackUrl = buildUrl(recordingUrl, {\n ...(isPlaybackTimeCheckboxChecked &&\n currentPlaybackTime > 0 && { time: currentPlaybackTime }),\n });\n\n setShareLink(playbackUrl);\n }, [recordingUrl, isPlaybackTimeCheckboxChecked, currentPlaybackTime]);\n\n return (\n <>\n <div className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-3 flex w-full 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 <Input\n className=\"w-40\"\n data-cy=\"time-input\"\n disabled={not(isPlaybackTimeCheckboxChecked)}\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n </>\n );\n};\n\nexport default SharePaneBody;\n","/* eslint-disable @bigbinary/neeto/no-dumb-components-with-use-translation */\nimport React from \"react\";\n\nimport { Pane, Typography, Spinner } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SharePaneBody from \"./SharePaneBody\";\n\nconst ShareRecordingPane = ({\n recordingUrl,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n return (\n <Pane\n {...{ isOpen, onClose, ...otherProps }}\n data-cy=\"share-pane\"\n size=\"large\"\n >\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col space-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{ getCurrentTimestamp, isOpen, recordingUrl, totalDuration }}\n />\n )}\n </Pane.Body>\n </Pane>\n );\n};\n\nShareRecordingPane.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 * A function that returns current playback time of the recorded content in seconds.\n */\n getCurrentTimestamp: PropTypes.func.isRequired,\n /**\n * Boolean indicating whether the pane is open or not.\n */\n isOpen: PropTypes.bool.isRequired,\n /**\n * Function to close the pane.\n */\n onClose: PropTypes.func.isRequired,\n /**\n * Boolean indicating whether content is loading or not.\n */\n isLoading: PropTypes.bool,\n};\n\nexport default ShareRecordingPane;\n"],"names":["ONE_SECOND","ONE_MINUTE","ONE_HOUR","padZero","number","length","arguments","undefined","string","String","threshold","Math","pow","concat","shouldRenderHoursInput","duration","hours","floor","formatTime","timeInSeconds","showHours","minutes","seconds","parseTime","timeString","parts","split","map","part","NaN","parseInt","some","isNaN","validateInput","input","regex","colons","match","test","SharePaneBody","_ref","recordingUrl","totalDuration","getCurrentTimestamp","isOpen","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLink","setShareLink","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","_useState6","rawInput","setRawInput","_useState7","_useState8","isPlaybackTimeCheckboxChecked","setIsPlaybackTimeCheckboxChecked","handlePlaybackTimestampChange","e","target","value","formatAndSetTime","handleKeyDown","key","useEffect","not","playbackUrl","buildUrl","_objectSpread","time","React","createElement","Fragment","className","Tooltip","content","Typography","style","CopyToClipboardButton","Checkbox","checked","label","onChange","_ref2","Input","disabled","placeholder","onBlur","onKeyDown","ShareRecordingPane","onClose","_ref$isLoading","isLoading","otherProps","_objectWithoutProperties","_excluded","Pane","_extends","size","Header","Body","Spinner"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-molecules",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.2",
|
|
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
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* The ShareRecordingPane component provides a pane interface for sharing
|
|
5
|
+
*
|
|
6
|
+
* recordings. It includes options for specifying playback timestamps and generates
|
|
7
|
+
*
|
|
8
|
+
* shareable links accordingly. The pane allows users to copy the shareable link
|
|
9
|
+
*
|
|
10
|
+
* and adjust playback timestamps.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
*
|
|
14
|
+
* import React, { useState } from "react";
|
|
15
|
+
* import { Button } from "neetoui";
|
|
16
|
+
* import ShareRecordingPane from "components/ShareRecordingPane";
|
|
17
|
+
*
|
|
18
|
+
* const ShareRecordingPaneExample = () => {
|
|
19
|
+
* const [isOpen, setIsOpen] = useState(false);
|
|
20
|
+
*
|
|
21
|
+
* return (
|
|
22
|
+
* <>
|
|
23
|
+
* <Button
|
|
24
|
+
* label="Open Share Recording Pane"
|
|
25
|
+
* onClick={() => setIsOpen(true)}
|
|
26
|
+
* />
|
|
27
|
+
* <ShareRecordingPane
|
|
28
|
+
* recordingUrl="https://example.com/recording"
|
|
29
|
+
* totalDuration={3600} // Total duration in seconds (e.g., 1 hour)
|
|
30
|
+
* getCurrentTimestamp={() => 300} // Current playback time in seconds
|
|
31
|
+
* isOpen={isOpen} // Boolean indicating if the pane is open
|
|
32
|
+
* onClose={() => setIsOpen(false)} // Function to close the pane
|
|
33
|
+
* isLoading={false}
|
|
34
|
+
* />
|
|
35
|
+
* </>
|
|
36
|
+
* );
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* export default ShareRecordingPaneExample;
|
|
40
|
+
* @endexample
|
|
41
|
+
*/
|
|
42
|
+
declare const ShareRecordingPane: React.FC<{
|
|
43
|
+
recordingUrl: string;
|
|
44
|
+
totalDuration: number;
|
|
45
|
+
getCurrentTimestamp: () => number;
|
|
46
|
+
isOpen: boolean;
|
|
47
|
+
onClose: Function;
|
|
48
|
+
isLoading?: boolean;
|
|
49
|
+
}>;
|
|
50
|
+
export default ShareRecordingPane;
|