@bigbinary/neeto-molecules 4.0.95 → 4.0.96
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.
|
@@ -6,20 +6,20 @@ import Typography from '@bigbinary/neetoui/Typography';
|
|
|
6
6
|
import Spinner from '@bigbinary/neetoui/Spinner';
|
|
7
7
|
import { useTranslation } from 'react-i18next';
|
|
8
8
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
9
|
-
import { useState, useEffect } from 'react';
|
|
9
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
10
10
|
import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
|
|
11
11
|
import Label from '@bigbinary/neetoui/Label';
|
|
12
12
|
import Input from '@bigbinary/neetoui/Input';
|
|
13
|
-
import Tooltip from '@bigbinary/neetoui/Tooltip';
|
|
14
13
|
import Switch from '@bigbinary/neetoui/Switch';
|
|
14
|
+
import Button from '@bigbinary/neetoui/Button';
|
|
15
15
|
import { not, assoc } from 'ramda';
|
|
16
|
+
import CardLayout from './CardLayout.js';
|
|
16
17
|
import CopyToClipboardButton from './CopyToClipboardButton.js';
|
|
17
|
-
import { jsxs,
|
|
18
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
18
19
|
import 'classnames';
|
|
19
20
|
import '@bigbinary/neeto-commons-frontend/utils/general';
|
|
20
21
|
import '@bigbinary/neeto-icons/Copy';
|
|
21
22
|
import '@bigbinary/neeto-icons/Check';
|
|
22
|
-
import '@bigbinary/neetoui/Button';
|
|
23
23
|
import './inject-css-C2dztUxs.js';
|
|
24
24
|
|
|
25
25
|
var ONE_SECOND = 1;
|
|
@@ -74,6 +74,7 @@ var SharePaneBody = function SharePaneBody(_ref) {
|
|
|
74
74
|
totalDuration = _ref.totalDuration,
|
|
75
75
|
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
76
76
|
isOpen = _ref.isOpen,
|
|
77
|
+
onClose = _ref.onClose,
|
|
77
78
|
Preview = _ref.preview,
|
|
78
79
|
enableAutoplayAndMuteFlags = _ref.enableAutoplayAndMuteFlags;
|
|
79
80
|
var _useTranslation = useTranslation(),
|
|
@@ -115,84 +116,116 @@ var SharePaneBody = function SharePaneBody(_ref) {
|
|
|
115
116
|
if (timeInSeconds > totalDuration) {
|
|
116
117
|
timeInSeconds = totalDuration;
|
|
117
118
|
}
|
|
118
|
-
setCurrentPlaybackTime(timeInSeconds);
|
|
119
119
|
setRawInput(formatTime(timeInSeconds, showHours));
|
|
120
120
|
};
|
|
121
121
|
var handleKeyDown = function handleKeyDown(e) {
|
|
122
122
|
if (e.key !== "Enter") return;
|
|
123
123
|
formatAndSetTime();
|
|
124
124
|
};
|
|
125
|
-
|
|
126
|
-
if (not(isOpen)) return;
|
|
127
|
-
setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
|
|
128
|
-
setRawInput(formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours));
|
|
129
|
-
}, [isOpen, showHours, currentTimestamp]);
|
|
130
|
-
useEffect(function () {
|
|
125
|
+
var generateUrls = useCallback(function (timeInSeconds, urlParams) {
|
|
131
126
|
var playbackUrls = recordingUrls.map(function (recordingUrl) {
|
|
132
127
|
return buildUrl(recordingUrl, {
|
|
133
|
-
time:
|
|
134
|
-
muted: muted ? 1 : undefined,
|
|
135
|
-
autoplay: autoplay ? 1 : undefined
|
|
128
|
+
time: timeInSeconds,
|
|
129
|
+
muted: urlParams.muted ? 1 : undefined,
|
|
130
|
+
autoplay: urlParams.autoplay ? 1 : undefined
|
|
136
131
|
});
|
|
137
132
|
});
|
|
138
133
|
setShareLinks(playbackUrls);
|
|
139
|
-
}, [recordingUrls
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
134
|
+
}, [recordingUrls]);
|
|
135
|
+
var handleRegenerateUrl = function handleRegenerateUrl() {
|
|
136
|
+
var timeInSeconds = parseTime(rawInput);
|
|
137
|
+
if (timeInSeconds > totalDuration) {
|
|
138
|
+
timeInSeconds = totalDuration;
|
|
139
|
+
}
|
|
140
|
+
setCurrentPlaybackTime(timeInSeconds);
|
|
141
|
+
generateUrls(timeInSeconds, params);
|
|
142
|
+
};
|
|
143
|
+
useEffect(function () {
|
|
144
|
+
if (not(isOpen)) return;
|
|
145
|
+
var initialTime = currentTimestamp > 0 ? currentTimestamp : 0;
|
|
146
|
+
var initialParams = {
|
|
147
|
+
muted: false,
|
|
148
|
+
autoplay: false
|
|
149
|
+
};
|
|
150
|
+
setCurrentPlaybackTime(initialTime);
|
|
151
|
+
setRawInput(formatTime(initialTime, showHours));
|
|
152
|
+
setParams(initialParams);
|
|
153
|
+
generateUrls(initialTime, initialParams);
|
|
154
|
+
}, [isOpen, showHours, currentTimestamp, generateUrls]);
|
|
155
|
+
return /*#__PURE__*/jsxs("div", {
|
|
156
|
+
className: "flex w-full flex-col gap-y-6",
|
|
157
|
+
children: [/*#__PURE__*/jsx(CardLayout, {
|
|
158
|
+
title: t("neetoMolecules.shareRecording.configureUrlParameters"),
|
|
159
|
+
actionBlock: /*#__PURE__*/jsxs("div", {
|
|
160
|
+
className: "flex items-center gap-x-2",
|
|
161
|
+
children: [/*#__PURE__*/jsx(Button, {
|
|
162
|
+
"data-cy": "regenerate-url-button",
|
|
163
|
+
label: t("neetoMolecules.shareRecording.regenerateUrl"),
|
|
164
|
+
onClick: handleRegenerateUrl
|
|
165
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
166
|
+
"data-cy": "cancel-button",
|
|
167
|
+
label: t("neetoMolecules.shareRecording.cancel"),
|
|
153
168
|
style: "secondary",
|
|
154
|
-
|
|
169
|
+
onClick: onClose
|
|
155
170
|
})]
|
|
156
|
-
},
|
|
171
|
+
}),
|
|
172
|
+
description: t("neetoMolecules.shareRecording.configureUrlParametersDescription"),
|
|
173
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
174
|
+
className: "flex flex-col gap-y-4",
|
|
175
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
176
|
+
className: "flex items-center gap-x-2",
|
|
177
|
+
children: [/*#__PURE__*/jsx(Label, {
|
|
178
|
+
children: t("neetoMolecules.shareRecording.startVideoAt")
|
|
179
|
+
}), /*#__PURE__*/jsx(Input, {
|
|
180
|
+
unlimitedChars: true,
|
|
181
|
+
className: "w-40",
|
|
182
|
+
"data-cy": "time-input",
|
|
183
|
+
placeholder: showHours ? "HH:MM:SS" : "MM:SS",
|
|
184
|
+
value: rawInput,
|
|
185
|
+
onBlur: formatAndSetTime,
|
|
186
|
+
onChange: handlePlaybackTimestampChange,
|
|
187
|
+
onKeyDown: handleKeyDown
|
|
188
|
+
})]
|
|
189
|
+
}), enableAutoplayAndMuteFlags && /*#__PURE__*/jsxs(Fragment, {
|
|
190
|
+
children: [/*#__PURE__*/jsx(Switch, {
|
|
191
|
+
checked: muted,
|
|
192
|
+
"data-cy": "muted-checkbox",
|
|
193
|
+
id: "muted",
|
|
194
|
+
label: t("neetoMolecules.shareRecording.muted"),
|
|
195
|
+
name: "muted",
|
|
196
|
+
onChange: function onChange(e) {
|
|
197
|
+
return handleFlagsChange("muted", e.target.checked);
|
|
198
|
+
}
|
|
199
|
+
}), /*#__PURE__*/jsx(Switch, {
|
|
200
|
+
checked: autoplay,
|
|
201
|
+
"data-cy": "autoplay-checkbox",
|
|
202
|
+
id: "autoplay",
|
|
203
|
+
label: t("neetoMolecules.shareRecording.autoplay"),
|
|
204
|
+
name: "autoplay",
|
|
205
|
+
onChange: function onChange(e) {
|
|
206
|
+
return handleFlagsChange("autoplay", e.target.checked);
|
|
207
|
+
}
|
|
208
|
+
})]
|
|
209
|
+
})]
|
|
210
|
+
})
|
|
157
211
|
}), /*#__PURE__*/jsxs("div", {
|
|
158
|
-
className: "flex
|
|
159
|
-
children: [/*#__PURE__*/jsx(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
checked: muted,
|
|
176
|
-
"data-cy": "muted-checkbox",
|
|
177
|
-
id: "muted",
|
|
178
|
-
label: t("neetoMolecules.shareRecording.muted"),
|
|
179
|
-
name: "muted",
|
|
180
|
-
onChange: function onChange(e) {
|
|
181
|
-
return handleFlagsChange("muted", e.target.checked);
|
|
182
|
-
}
|
|
183
|
-
})
|
|
184
|
-
}), /*#__PURE__*/jsx("div", {
|
|
185
|
-
className: "flex items-center gap-x-2",
|
|
186
|
-
children: /*#__PURE__*/jsx(Switch, {
|
|
187
|
-
checked: autoplay,
|
|
188
|
-
"data-cy": "autoplay-checkbox",
|
|
189
|
-
id: "autoplay",
|
|
190
|
-
label: t("neetoMolecules.shareRecording.autoplay"),
|
|
191
|
-
name: "autoplay",
|
|
192
|
-
onChange: function onChange(e) {
|
|
193
|
-
return handleFlagsChange("autoplay", e.target.checked);
|
|
194
|
-
}
|
|
195
|
-
})
|
|
212
|
+
className: "flex flex-col gap-y-2",
|
|
213
|
+
children: [/*#__PURE__*/jsx(Typography, {
|
|
214
|
+
style: "h3",
|
|
215
|
+
children: t("neetoMolecules.shareRecording.generatedUrls")
|
|
216
|
+
}), shareLinks.map(function (shareLink, index) {
|
|
217
|
+
return /*#__PURE__*/jsxs("div", {
|
|
218
|
+
className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex w-full items-center justify-between gap-1 p-2",
|
|
219
|
+
children: [/*#__PURE__*/jsx(Typography, {
|
|
220
|
+
className: "min-w-0 flex-1 break-words",
|
|
221
|
+
style: "body2",
|
|
222
|
+
children: shareLink
|
|
223
|
+
}), /*#__PURE__*/jsx(CopyToClipboardButton, {
|
|
224
|
+
className: "flex-shrink-0",
|
|
225
|
+
style: "secondary",
|
|
226
|
+
value: shareLink
|
|
227
|
+
})]
|
|
228
|
+
}, index);
|
|
196
229
|
})]
|
|
197
230
|
}), Preview && /*#__PURE__*/jsxs("div", {
|
|
198
231
|
className: "flex flex-col gap-y-2 pt-2",
|
|
@@ -247,6 +280,7 @@ var ShareRecordingPane = function ShareRecordingPane(_ref) {
|
|
|
247
280
|
enableAutoplayAndMuteFlags: enableAutoplayAndMuteFlags,
|
|
248
281
|
getCurrentTimestamp: getCurrentTimestamp,
|
|
249
282
|
isOpen: isOpen,
|
|
283
|
+
onClose: onClose,
|
|
250
284
|
preview: preview,
|
|
251
285
|
totalDuration: totalDuration,
|
|
252
286
|
recordingUrls: recordingUrlsToShare
|
|
@@ -1 +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 { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Label, Typography, Input, Tooltip, Switch } from \"neetoui\";\nimport { assoc, 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 recordingUrls,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n preview: Preview,\n enableAutoplayAndMuteFlags,\n}) => {\n const { t } = useTranslation();\n\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLinks, setShareLinks] = useState([]);\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n\n const [params, setParams] = useState({\n muted: false,\n autoplay: false,\n });\n\n const { muted, autoplay } = params;\n\n const [rawInput, setRawInput] = useState(\"\");\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 handleFlagsChange = (key, value) => setParams(assoc(key, value));\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 setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n setRawInput(\n formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours)\n );\n }, [isOpen, showHours, currentTimestamp]);\n\n useEffect(() => {\n const playbackUrls = recordingUrls.map(recordingUrl =>\n buildUrl(recordingUrl, {\n time: currentPlaybackTime,\n muted: muted ? 1 : undefined,\n autoplay: autoplay ? 1 : undefined,\n })\n );\n\n setShareLinks(playbackUrls);\n }, [recordingUrls, currentPlaybackTime, muted, autoplay]);\n\n return (\n <>\n {shareLinks.map((shareLink, index) => (\n <div\n className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-2 flex w-full items-center justify-between gap-1 p-2\"\n key={index}\n >\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 ))}\n <div className=\"flex items-center gap-x-2\">\n <Label>{t(\"neetoMolecules.shareRecording.checkboxLabel\")}</Label>\n <Input\n className=\"w-40\"\n data-cy=\"time-input\"\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n {enableAutoplayAndMuteFlags && (\n <div className=\"mt-3 flex flex-col gap-y-4\">\n <div className=\"flex items-center gap-x-2\">\n <Switch\n checked={muted}\n data-cy=\"muted-checkbox\"\n id=\"muted\"\n label={t(\"neetoMolecules.shareRecording.muted\")}\n name=\"muted\"\n onChange={e => handleFlagsChange(\"muted\", e.target.checked)}\n />\n </div>\n <div className=\"flex items-center gap-x-2\">\n <Switch\n checked={autoplay}\n data-cy=\"autoplay-checkbox\"\n id=\"autoplay\"\n label={t(\"neetoMolecules.shareRecording.autoplay\")}\n name=\"autoplay\"\n onChange={e => handleFlagsChange(\"autoplay\", e.target.checked)}\n />\n </div>\n </div>\n )}\n {Preview && (\n <div className=\"flex flex-col gap-y-2 pt-2\">\n <Label>{t(\"neetoMolecules.shareRecording.preview\")}</Label>\n <Preview {...{ currentPlaybackTime }} />\n </div>\n )}\n </>\n );\n};\n\nexport default SharePaneBody;\n","/* eslint-disable @bigbinary/neeto/no-dumb-components-with-use-translation */\nimport { isNotEmpty } from \"neetocist\";\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 = null,\n recordingUrls = [],\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n preview,\n enableAutoplayAndMuteFlags = false,\n size = \"large\",\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n const recordingUrlsToShare = isNotEmpty(recordingUrls)\n ? recordingUrls\n : [recordingUrl];\n\n return (\n <Pane {...{ isOpen, onClose, size, ...otherProps }} data-cy=\"share-pane\">\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col gap-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{\n enableAutoplayAndMuteFlags,\n getCurrentTimestamp,\n isOpen,\n preview,\n totalDuration,\n }}\n recordingUrls={recordingUrlsToShare}\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,\n /**\n * Recording URLs used for building the share link.\n */\n recordingUrls: PropTypes.array,\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 * Component to render as a preview of the recording.\n */\n preview: PropTypes.elementType,\n /**\n * Size of the pane.\n */\n size: PropTypes.oneOf([\"extraLarge\", \"large\", \"small\"]),\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","recordingUrls","totalDuration","getCurrentTimestamp","isOpen","Preview","preview","enableAutoplayAndMuteFlags","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLinks","setShareLinks","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","muted","autoplay","_useState6","params","setParams","_useState7","_useState8","rawInput","setRawInput","handlePlaybackTimestampChange","e","target","value","handleFlagsChange","key","assoc","formatAndSetTime","handleKeyDown","useEffect","not","playbackUrls","recordingUrl","buildUrl","time","_jsxs","_Fragment","children","shareLink","index","className","_jsx","Tooltip","content","Typography","style","CopyToClipboardButton","Label","Input","placeholder","onBlur","onChange","onKeyDown","Switch","checked","id","label","name","ShareRecordingPane","_ref$recordingUrl","_ref$recordingUrls","onClose","_ref$isLoading","isLoading","_ref$enableAutoplayAn","_ref$size","size","otherProps","_objectWithoutProperties","_excluded","recordingUrlsToShare","isNotEmpty","Pane","_objectSpread","Header","Body","Spinner"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,UAAU,GAAG,CAAC;AACpB,IAAMC,UAAU,GAAG,EAAE,GAAGD,UAAU;AAClC,IAAME,QAAQ,GAAG,EAAE,GAAGD,UAAU;;ACAhC,IAAME,OAAO,GAAG,SAAVA,OAAOA,CAAIC,MAAM,EAAiB;AAAA,EAAA,IAAfC,MAAM,GAAAC,SAAA,CAAAD,MAAA,GAAA,CAAA,IAAAC,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC;AACxC,EAAA,IAAIE,MAAM,GAAGC,MAAM,CAACL,MAAM,CAAC;EAC3B,IAAMM,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEP,MAAM,GAAG,CAAC,CAAC;EAE1C,IAAID,MAAM,GAAGM,SAAS,EAAE;IACtB,OAAOD,MAAM,CAACC,SAAS,CAAC,CAACL,MAAM,GAAGG,MAAM,CAACH,MAAM,EAAE;AAC/CG,MAAAA,MAAM,GAAA,GAAA,CAAAK,MAAA,CAAOT,MAAM,CAAE;AACvB,IAAA;AACF,EAAA;AAEA,EAAA,OAAOI,MAAM;AACf,CAAC;AAEM,IAAMM,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAGC,QAAQ,EAAI;EAChD,IAAMC,KAAK,GAAGL,IAAI,CAACM,KAAK,CAACF,QAAQ,GAAGb,QAAQ,CAAC;EAE7C,OAAOc,KAAK,GAAG,CAAC;AAClB,CAAC;AAEM,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAIC,aAAa,EAAEC,SAAS,EAAK;EACtD,IAAMJ,KAAK,GAAGL,IAAI,CAACM,KAAK,CAACE,aAAa,GAAGjB,QAAQ,CAAC;EAClD,IAAMmB,OAAO,GAAGV,IAAI,CAACM,KAAK,CAAEE,aAAa,GAAGjB,QAAQ,GAAID,UAAU,CAAC;AACnE,EAAA,IAAMqB,OAAO,GAAGH,aAAa,GAAGlB,UAAU;AAE1C,EAAA,OAAOmB,SAAS,GAAA,EAAA,CAAAP,MAAA,CACTV,OAAO,CAACa,KAAK,CAAC,EAAA,GAAA,CAAA,CAAAH,MAAA,CAAIV,OAAO,CAACkB,OAAO,CAAC,OAAAR,MAAA,CAAIV,OAAO,CAACmB,OAAO,CAAC,CAAA,GAAA,EAAA,CAAAT,MAAA,CACtDV,OAAO,CAACkB,OAAO,CAAC,EAAA,GAAA,CAAA,CAAAR,MAAA,CAAIV,OAAO,CAACmB,OAAO,CAAC,CAAE;AAC/C,CAAC;AAEM,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAGC,UAAU,EAAI;AACrC,EAAA,IAAMC,KAAK,GAAGD,UAAU,CACrBE,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAC,UAAAC,IAAI,EAAA;IAAA,OAAKA,IAAI,KAAK,EAAE,GAAGC,GAAG,GAAGC,QAAQ,CAACF,IAAI,EAAE,EAAE,CAAC;AAAA,EAAA,CAAC,CAAC;AACxD,EAAA,IAAIH,KAAK,CAACM,IAAI,CAACC,KAAK,CAAC,IAAIP,KAAK,CAACpB,MAAM,GAAG,CAAC,EAAE;AACzC,IAAA,OAAO,CAAC;AACV,EAAA;AAEA,EAAA,IAAIoB,KAAK,CAACpB,MAAM,KAAK,CAAC,EAAE;IACtB,OAAOoB,KAAK,CAAC,CAAC,CAAC;AACjB,EAAA,CAAC,MAAM,IAAIA,KAAK,CAACpB,MAAM,KAAK,CAAC,EAAE;IAC7B,OAAOoB,KAAK,CAAC,CAAC,CAAC,GAAGxB,UAAU,GAAGwB,KAAK,CAAC,CAAC,CAAC;AACzC,EAAA,CAAC,MAAM,IAAIA,KAAK,CAACpB,MAAM,KAAK,CAAC,EAAE;AAC7B,IAAA,OAAOoB,KAAK,CAAC,CAAC,CAAC,GAAGvB,QAAQ,GAAGuB,KAAK,CAAC,CAAC,CAAC,GAAGxB,UAAU,GAAGwB,KAAK,CAAC,CAAC,CAAC;AAC/D,EAAA;AAEA,EAAA,OAAO,CAAC;AACV,CAAC;AAEM,IAAMQ,aAAa,GAAG,SAAhBA,aAAaA,CAAGC,KAAK,EAAI;EACpC,IAAMC,KAAK,GAAG,eAAe;AAC7B,EAAA,IAAMC,MAAM,GAAG,CAACF,KAAK,CAACG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAEhC,MAAM;EAE/C,OAAO8B,KAAK,CAACG,IAAI,CAACJ,KAAK,CAAC,IAAIE,MAAM,IAAI,CAAC;AACzC,CAAC;;ACvCD,IAAMG,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,IAAA,EAOb;AAAA,EAAA,IANJC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;IACnBC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACGC,OAAO,GAAAL,IAAA,CAAhBM,OAAO;IACPC,0BAA0B,GAAAP,IAAA,CAA1BO,0BAA0B;AAE1B,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AAET,EAAA,IAAMC,gBAAgB,GAAGR,mBAAmB,EAAE;AAE9C,EAAA,IAAAS,SAAA,GAAoCC,QAAQ,CAAC,EAAE,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAzCI,IAAAA,UAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,UAAA,CAAA,CAAA,CAAA;AAChC,EAAA,IAAAI,UAAA,GACEL,QAAQ,CAACF,gBAAgB,CAAC;IAAAQ,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AADrBE,IAAAA,mBAAmB,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,sBAAsB,GAAAF,UAAA,CAAA,CAAA,CAAA;EAGlD,IAAAG,UAAA,GAA4BT,QAAQ,CAAC;AACnCU,MAAAA,KAAK,EAAE,KAAK;AACZC,MAAAA,QAAQ,EAAE;AACZ,KAAC,CAAC;IAAAC,UAAA,GAAAV,cAAA,CAAAO,UAAA,EAAA,CAAA,CAAA;AAHKI,IAAAA,MAAM,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,SAAS,GAAAF,UAAA,CAAA,CAAA,CAAA;AAKxB,EAAA,IAAQF,KAAK,GAAeG,MAAM,CAA1BH,KAAK;IAAEC,QAAQ,GAAKE,MAAM,CAAnBF,QAAQ;AAEvB,EAAA,IAAAI,UAAA,GAAgCf,QAAQ,CAAC,EAAE,CAAC;IAAAgB,UAAA,GAAAd,cAAA,CAAAa,UAAA,EAAA,CAAA,CAAA;AAArCE,IAAAA,QAAQ,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,WAAW,GAAAF,UAAA,CAAA,CAAA,CAAA;AAE5B,EAAA,IAAMjD,SAAS,GAAGN,sBAAsB,CAAC4B,aAAa,CAAC;AAEvD,EAAA,IAAM8B,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAGC,CAAC,EAAI;AACzC,IAAA,IAAMvC,KAAK,GAAGuC,CAAC,CAACC,MAAM,CAACC,KAAK;AAC5B,IAAA,IAAI1C,aAAa,CAACC,KAAK,CAAC,EAAE;MACxBqC,WAAW,CAACrC,KAAK,CAAC;AACpB,IAAA;EACF,CAAC;AAED,EAAA,IAAM0C,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,GAAG,EAAEF,KAAK,EAAA;IAAA,OAAKR,SAAS,CAACW,KAAK,CAACD,GAAG,EAAEF,KAAK,CAAC,CAAC;AAAA,EAAA,CAAA;AAEtE,EAAA,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAS;AAC7B,IAAA,IAAI5D,aAAa,GAAGI,SAAS,CAAC+C,QAAQ,CAAC;IACvC,IAAInD,aAAa,GAAGuB,aAAa,EAAE;AACjCvB,MAAAA,aAAa,GAAGuB,aAAa;AAC/B,IAAA;IACAmB,sBAAsB,CAAC1C,aAAa,CAAC;AACrCoD,IAAAA,WAAW,CAACrD,UAAU,CAACC,aAAa,EAAEC,SAAS,CAAC,CAAC;EACnD,CAAC;AAED,EAAA,IAAM4D,aAAa,GAAG,SAAhBA,aAAaA,CAAGP,CAAC,EAAI;AACzB,IAAA,IAAIA,CAAC,CAACI,GAAG,KAAK,OAAO,EAAE;AACvBE,IAAAA,gBAAgB,EAAE;EACpB,CAAC;AAEDE,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAIC,GAAG,CAACtC,MAAM,CAAC,EAAE;IAEjBiB,sBAAsB,CAACV,gBAAgB,GAAG,CAAC,GAAGA,gBAAgB,GAAG,CAAC,CAAC;AACnEoB,IAAAA,WAAW,CACTrD,UAAU,CAACiC,gBAAgB,GAAG,CAAC,GAAGA,gBAAgB,GAAG,CAAC,EAAE/B,SAAS,CACnE,CAAC;EACH,CAAC,EAAE,CAACwB,MAAM,EAAExB,SAAS,EAAE+B,gBAAgB,CAAC,CAAC;AAEzC8B,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAME,YAAY,GAAG1C,aAAa,CAACd,GAAG,CAAC,UAAAyD,YAAY,EAAA;MAAA,OACjDC,QAAQ,CAACD,YAAY,EAAE;AACrBE,QAAAA,IAAI,EAAE1B,mBAAmB;AACzBG,QAAAA,KAAK,EAAEA,KAAK,GAAG,CAAC,GAAGxD,SAAS;AAC5ByD,QAAAA,QAAQ,EAAEA,QAAQ,GAAG,CAAC,GAAGzD;AAC3B,OAAC,CAAC;AAAA,IAAA,CACJ,CAAC;IAEDkD,aAAa,CAAC0B,YAAY,CAAC;EAC7B,CAAC,EAAE,CAAC1C,aAAa,EAAEmB,mBAAmB,EAAEG,KAAK,EAAEC,QAAQ,CAAC,CAAC;EAEzD,oBACEuB,IAAA,CAAAC,QAAA,EAAA;IAAAC,QAAA,EAAA,CACGjC,UAAU,CAAC7B,GAAG,CAAC,UAAC+D,SAAS,EAAEC,KAAK,EAAA;AAAA,MAAA,oBAC/BJ,IAAA,CAAA,KAAA,EAAA;AACEK,QAAAA,SAAS,EAAC,kGAAkG;QAAAH,QAAA,EAAA,cAG5GI,GAAA,CAACC,OAAO,EAAA;AAACC,UAAAA,OAAO,EAAEL,SAAU;UAAAD,QAAA,eAC1BI,GAAA,CAACG,UAAU,EAAA;AAACJ,YAAAA,SAAS,EAAC,UAAU;AAACK,YAAAA,KAAK,EAAC,OAAO;AAAAR,YAAAA,QAAA,EAC3CC;WACS;AAAC,SACN,CAAC,eACVG,GAAA,CAACK,qBAAqB,EAAA;AACpBN,UAAAA,SAAS,EAAC,eAAe;AACzBK,UAAAA,KAAK,EAAC,WAAW;AACjBtB,UAAAA,KAAK,EAAEe;AAAU,SAClB,CAAC;AAAA,OAAA,EAXGC,KAYF,CAAC;IAAA,CACP,CAAC,eACFJ,IAAA,CAAA,KAAA,EAAA;AAAKK,MAAAA,SAAS,EAAC,2BAA2B;MAAAH,QAAA,EAAA,cACxCI,GAAA,CAACM,KAAK,EAAA;QAAAV,QAAA,EAAEvC,CAAC,CAAC,6CAA6C;AAAC,OAAQ,CAAC,eACjE2C,GAAA,CAACO,KAAK,EAAA;AACJR,QAAAA,SAAS,EAAC,MAAM;AAChB,QAAA,SAAA,EAAQ,YAAY;AACpBS,QAAAA,WAAW,EAAEjF,SAAS,GAAG,UAAU,GAAG,OAAQ;AAC9CuD,QAAAA,KAAK,EAAEL,QAAS;AAChBgC,QAAAA,MAAM,EAAEvB,gBAAiB;AACzBwB,QAAAA,QAAQ,EAAE/B,6BAA8B;AACxCgC,QAAAA,SAAS,EAAExB;AAAc,OAC1B,CAAC;AAAA,KACC,CAAC,EACLjC,0BAA0B,iBACzBwC,IAAA,CAAA,KAAA,EAAA;AAAKK,MAAAA,SAAS,EAAC,4BAA4B;AAAAH,MAAAA,QAAA,gBACzCI,GAAA,CAAA,KAAA,EAAA;AAAKD,QAAAA,SAAS,EAAC,2BAA2B;QAAAH,QAAA,eACxCI,GAAA,CAACY,MAAM,EAAA;AACLC,UAAAA,OAAO,EAAE3C,KAAM;AACf,UAAA,SAAA,EAAQ,gBAAgB;AACxB4C,UAAAA,EAAE,EAAC,OAAO;AACVC,UAAAA,KAAK,EAAE1D,CAAC,CAAC,qCAAqC,CAAE;AAChD2D,UAAAA,IAAI,EAAC,OAAO;AACZN,UAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAE9B,CAAC,EAAA;YAAA,OAAIG,iBAAiB,CAAC,OAAO,EAAEH,CAAC,CAACC,MAAM,CAACgC,OAAO,CAAC;AAAA,UAAA;SAC5D;OACE,CAAC,eACNb,GAAA,CAAA,KAAA,EAAA;AAAKD,QAAAA,SAAS,EAAC,2BAA2B;QAAAH,QAAA,eACxCI,GAAA,CAACY,MAAM,EAAA;AACLC,UAAAA,OAAO,EAAE1C,QAAS;AAClB,UAAA,SAAA,EAAQ,mBAAmB;AAC3B2C,UAAAA,EAAE,EAAC,UAAU;AACbC,UAAAA,KAAK,EAAE1D,CAAC,CAAC,wCAAwC,CAAE;AACnD2D,UAAAA,IAAI,EAAC,UAAU;AACfN,UAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAE9B,CAAC,EAAA;YAAA,OAAIG,iBAAiB,CAAC,UAAU,EAAEH,CAAC,CAACC,MAAM,CAACgC,OAAO,CAAC;AAAA,UAAA;SAC/D;AAAC,OACC,CAAC;AAAA,KACH,CACN,EACA7D,OAAO,iBACN0C,IAAA,CAAA,KAAA,EAAA;AAAKK,MAAAA,SAAS,EAAC,4BAA4B;MAAAH,QAAA,EAAA,cACzCI,GAAA,CAACM,KAAK,EAAA;QAAAV,QAAA,EAAEvC,CAAC,CAAC,uCAAuC;AAAC,OAAQ,CAAC,eAC3D2C,GAAA,CAAChD,OAAO,EAAA;AAAOe,QAAAA,mBAAmB,EAAnBA;AAAmB,OAAK,CAAC;AAAA,KACrC,CACN;AAAA,GACD,CAAC;AAEP,CAAC;;;;;AC9ID,IAAMkD,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAtE,IAAA,EAYlB;AAAA,EAAA,IAAAuE,iBAAA,GAAAvE,IAAA,CAXJ4C,YAAY;AAAZA,IAAAA,YAAY,GAAA2B,iBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,iBAAA;IAAAC,kBAAA,GAAAxE,IAAA,CACnBC,aAAa;AAAbA,IAAAA,aAAa,GAAAuE,kBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,kBAAA;IAClBtE,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;IACnBC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNqE,OAAO,GAAAzE,IAAA,CAAPyE,OAAO;IAAAC,cAAA,GAAA1E,IAAA,CACP2E,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,cAAA;IACjBpE,OAAO,GAAAN,IAAA,CAAPM,OAAO;IAAAsE,qBAAA,GAAA5E,IAAA,CACPO,0BAA0B;AAA1BA,IAAAA,0BAA0B,GAAAqE,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,SAAA,GAAA7E,IAAA,CAClC8E,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAA,MAAA,GAAG,OAAO,GAAAA,SAAA;AACXE,IAAAA,UAAU,GAAAC,wBAAA,CAAAhF,IAAA,EAAAiF,SAAA,CAAA;AAEb,EAAA,IAAAzE,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;EAET,IAAMwE,oBAAoB,GAAGC,UAAU,CAAClF,aAAa,CAAC,GAClDA,aAAa,GACb,CAAC2C,YAAY,CAAC;EAElB,oBACEG,IAAA,CAACqC,IAAI,EAAAC,aAAA,CAAAA,aAAA,KAAAA,aAAA,CAAA;AAAOjF,IAAAA,MAAM,EAANA,MAAM;AAAEqE,IAAAA,OAAO,EAAPA,OAAO;AAAEK,IAAAA,IAAI,EAAJA;AAAI,GAAA,EAAKC,UAAU,CAAA,CAAA,EAAA,EAAA,EAAA;AAAI,IAAA,SAAA,EAAQ,YAAY;AAAA9B,IAAAA,QAAA,EAAA,cACtEI,GAAA,CAAC+B,IAAI,CAACE,MAAM,EAAA;MAAArC,QAAA,eACVI,GAAA,CAACG,UAAU,EAAA;AAACC,QAAAA,KAAK,EAAC,IAAI;QAAAR,QAAA,EACnBvC,CAAC,CAAC,qCAAqC;OAC9B;AAAC,KACF,CAAC,eACd2C,GAAA,CAAC+B,IAAI,CAACG,IAAI,EAAA;AAACnC,MAAAA,SAAS,EAAC,uBAAuB;AAAAH,MAAAA,QAAA,EACzC0B,SAAS,gBACRtB,GAAA,CAACmC,OAAO,EAAA;AAACpC,QAAAA,SAAS,EAAC;AAAS,OAAE,CAAC,gBAE/BC,GAAA,CAACtD,aAAa,EAAA;AAEVQ,QAAAA,0BAA0B,EAA1BA,0BAA0B;AAC1BJ,QAAAA,mBAAmB,EAAnBA,mBAAmB;AACnBC,QAAAA,MAAM,EAANA,MAAM;AACNE,QAAAA,OAAO,EAAPA,OAAO;AACPJ,QAAAA,aAAa,EAAbA,aAAa;AAEfD,QAAAA,aAAa,EAAEiF;OAChB;AACF,KACQ,CAAC;AAAA,GAAA,CACR,CAAC;AAEX;;;;"}
|
|
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 { useState, useEffect, useCallback } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Label, Typography, Input, Switch, Button } from \"neetoui\";\nimport { assoc, not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CardLayout from \"components/CardLayout\";\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport {\n formatTime,\n parseTime,\n shouldRenderHoursInput,\n validateInput,\n} from \"./utils\";\n\nconst SharePaneBody = ({\n recordingUrls,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n preview: Preview,\n enableAutoplayAndMuteFlags,\n}) => {\n const { t } = useTranslation();\n\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLinks, setShareLinks] = useState([]);\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n\n const [params, setParams] = useState({\n muted: false,\n autoplay: false,\n });\n\n const { muted, autoplay } = params;\n\n const [rawInput, setRawInput] = useState(\"\");\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 handleFlagsChange = (key, value) => setParams(assoc(key, value));\n\n const formatAndSetTime = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setRawInput(formatTime(timeInSeconds, showHours));\n };\n\n const handleKeyDown = e => {\n if (e.key !== \"Enter\") return;\n formatAndSetTime();\n };\n\n const generateUrls = useCallback(\n (timeInSeconds, urlParams) => {\n const playbackUrls = recordingUrls.map(recordingUrl =>\n buildUrl(recordingUrl, {\n time: timeInSeconds,\n muted: urlParams.muted ? 1 : undefined,\n autoplay: urlParams.autoplay ? 1 : undefined,\n })\n );\n setShareLinks(playbackUrls);\n },\n [recordingUrls]\n );\n\n const handleRegenerateUrl = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setCurrentPlaybackTime(timeInSeconds);\n generateUrls(timeInSeconds, params);\n };\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n const initialTime = currentTimestamp > 0 ? currentTimestamp : 0;\n const initialParams = { muted: false, autoplay: false };\n\n setCurrentPlaybackTime(initialTime);\n setRawInput(formatTime(initialTime, showHours));\n setParams(initialParams);\n generateUrls(initialTime, initialParams);\n }, [isOpen, showHours, currentTimestamp, generateUrls]);\n\n return (\n <div className=\"flex w-full flex-col gap-y-6\">\n <CardLayout\n title={t(\"neetoMolecules.shareRecording.configureUrlParameters\")}\n actionBlock={\n <div className=\"flex items-center gap-x-2\">\n <Button\n data-cy=\"regenerate-url-button\"\n label={t(\"neetoMolecules.shareRecording.regenerateUrl\")}\n onClick={handleRegenerateUrl}\n />\n <Button\n data-cy=\"cancel-button\"\n label={t(\"neetoMolecules.shareRecording.cancel\")}\n style=\"secondary\"\n onClick={onClose}\n />\n </div>\n }\n description={t(\n \"neetoMolecules.shareRecording.configureUrlParametersDescription\"\n )}\n >\n <div className=\"flex flex-col gap-y-4\">\n <div className=\"flex items-center gap-x-2\">\n <Label>{t(\"neetoMolecules.shareRecording.startVideoAt\")}</Label>\n <Input\n unlimitedChars\n className=\"w-40\"\n data-cy=\"time-input\"\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n {enableAutoplayAndMuteFlags && (\n <>\n <Switch\n checked={muted}\n data-cy=\"muted-checkbox\"\n id=\"muted\"\n label={t(\"neetoMolecules.shareRecording.muted\")}\n name=\"muted\"\n onChange={e => handleFlagsChange(\"muted\", e.target.checked)}\n />\n <Switch\n checked={autoplay}\n data-cy=\"autoplay-checkbox\"\n id=\"autoplay\"\n label={t(\"neetoMolecules.shareRecording.autoplay\")}\n name=\"autoplay\"\n onChange={e => handleFlagsChange(\"autoplay\", e.target.checked)}\n />\n </>\n )}\n </div>\n </CardLayout>\n <div className=\"flex flex-col gap-y-2\">\n <Typography style=\"h3\">\n {t(\"neetoMolecules.shareRecording.generatedUrls\")}\n </Typography>\n {shareLinks.map((shareLink, index) => (\n <div\n className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex w-full items-center justify-between gap-1 p-2\"\n key={index}\n >\n <Typography className=\"min-w-0 flex-1 break-words\" style=\"body2\">\n {shareLink}\n </Typography>\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n style=\"secondary\"\n value={shareLink}\n />\n </div>\n ))}\n </div>\n {Preview && (\n <div className=\"flex flex-col gap-y-2 pt-2\">\n <Label>{t(\"neetoMolecules.shareRecording.preview\")}</Label>\n <Preview {...{ currentPlaybackTime }} />\n </div>\n )}\n </div>\n );\n};\n\nexport default SharePaneBody;\n","import { isNotEmpty } from \"neetocist\";\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 = null,\n recordingUrls = [],\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n preview,\n enableAutoplayAndMuteFlags = false,\n size = \"large\",\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n const recordingUrlsToShare = isNotEmpty(recordingUrls)\n ? recordingUrls\n : [recordingUrl];\n\n return (\n <Pane {...{ isOpen, onClose, size, ...otherProps }} data-cy=\"share-pane\">\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col gap-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{\n enableAutoplayAndMuteFlags,\n getCurrentTimestamp,\n isOpen,\n onClose,\n preview,\n totalDuration,\n }}\n recordingUrls={recordingUrlsToShare}\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,\n /**\n * Recording URLs used for building the share link.\n */\n recordingUrls: PropTypes.array,\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 * Component to render as a preview of the recording.\n */\n preview: PropTypes.elementType,\n /**\n * Size of the pane.\n */\n size: PropTypes.oneOf([\"extraLarge\", \"large\", \"small\"]),\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","recordingUrls","totalDuration","getCurrentTimestamp","isOpen","onClose","Preview","preview","enableAutoplayAndMuteFlags","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLinks","setShareLinks","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","muted","autoplay","_useState6","params","setParams","_useState7","_useState8","rawInput","setRawInput","handlePlaybackTimestampChange","e","target","value","handleFlagsChange","key","assoc","formatAndSetTime","handleKeyDown","generateUrls","useCallback","urlParams","playbackUrls","recordingUrl","buildUrl","time","handleRegenerateUrl","useEffect","not","initialTime","initialParams","_jsxs","className","children","_jsx","CardLayout","title","actionBlock","Button","label","onClick","style","description","Label","Input","unlimitedChars","placeholder","onBlur","onChange","onKeyDown","_Fragment","Switch","checked","id","name","Typography","shareLink","index","CopyToClipboardButton","ShareRecordingPane","_ref$recordingUrl","_ref$recordingUrls","_ref$isLoading","isLoading","_ref$enableAutoplayAn","_ref$size","size","otherProps","_objectWithoutProperties","_excluded","recordingUrlsToShare","isNotEmpty","Pane","_objectSpread","Header","Body","Spinner"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,UAAU,GAAG,CAAC;AACpB,IAAMC,UAAU,GAAG,EAAE,GAAGD,UAAU;AAClC,IAAME,QAAQ,GAAG,EAAE,GAAGD,UAAU;;ACAhC,IAAME,OAAO,GAAG,SAAVA,OAAOA,CAAIC,MAAM,EAAiB;AAAA,EAAA,IAAfC,MAAM,GAAAC,SAAA,CAAAD,MAAA,GAAA,CAAA,IAAAC,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC;AACxC,EAAA,IAAIE,MAAM,GAAGC,MAAM,CAACL,MAAM,CAAC;EAC3B,IAAMM,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEP,MAAM,GAAG,CAAC,CAAC;EAE1C,IAAID,MAAM,GAAGM,SAAS,EAAE;IACtB,OAAOD,MAAM,CAACC,SAAS,CAAC,CAACL,MAAM,GAAGG,MAAM,CAACH,MAAM,EAAE;AAC/CG,MAAAA,MAAM,GAAA,GAAA,CAAAK,MAAA,CAAOT,MAAM,CAAE;AACvB,IAAA;AACF,EAAA;AAEA,EAAA,OAAOI,MAAM;AACf,CAAC;AAEM,IAAMM,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAGC,QAAQ,EAAI;EAChD,IAAMC,KAAK,GAAGL,IAAI,CAACM,KAAK,CAACF,QAAQ,GAAGb,QAAQ,CAAC;EAE7C,OAAOc,KAAK,GAAG,CAAC;AAClB,CAAC;AAEM,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAIC,aAAa,EAAEC,SAAS,EAAK;EACtD,IAAMJ,KAAK,GAAGL,IAAI,CAACM,KAAK,CAACE,aAAa,GAAGjB,QAAQ,CAAC;EAClD,IAAMmB,OAAO,GAAGV,IAAI,CAACM,KAAK,CAAEE,aAAa,GAAGjB,QAAQ,GAAID,UAAU,CAAC;AACnE,EAAA,IAAMqB,OAAO,GAAGH,aAAa,GAAGlB,UAAU;AAE1C,EAAA,OAAOmB,SAAS,GAAA,EAAA,CAAAP,MAAA,CACTV,OAAO,CAACa,KAAK,CAAC,EAAA,GAAA,CAAA,CAAAH,MAAA,CAAIV,OAAO,CAACkB,OAAO,CAAC,OAAAR,MAAA,CAAIV,OAAO,CAACmB,OAAO,CAAC,CAAA,GAAA,EAAA,CAAAT,MAAA,CACtDV,OAAO,CAACkB,OAAO,CAAC,EAAA,GAAA,CAAA,CAAAR,MAAA,CAAIV,OAAO,CAACmB,OAAO,CAAC,CAAE;AAC/C,CAAC;AAEM,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAGC,UAAU,EAAI;AACrC,EAAA,IAAMC,KAAK,GAAGD,UAAU,CACrBE,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAC,UAAAC,IAAI,EAAA;IAAA,OAAKA,IAAI,KAAK,EAAE,GAAGC,GAAG,GAAGC,QAAQ,CAACF,IAAI,EAAE,EAAE,CAAC;AAAA,EAAA,CAAC,CAAC;AACxD,EAAA,IAAIH,KAAK,CAACM,IAAI,CAACC,KAAK,CAAC,IAAIP,KAAK,CAACpB,MAAM,GAAG,CAAC,EAAE;AACzC,IAAA,OAAO,CAAC;AACV,EAAA;AAEA,EAAA,IAAIoB,KAAK,CAACpB,MAAM,KAAK,CAAC,EAAE;IACtB,OAAOoB,KAAK,CAAC,CAAC,CAAC;AACjB,EAAA,CAAC,MAAM,IAAIA,KAAK,CAACpB,MAAM,KAAK,CAAC,EAAE;IAC7B,OAAOoB,KAAK,CAAC,CAAC,CAAC,GAAGxB,UAAU,GAAGwB,KAAK,CAAC,CAAC,CAAC;AACzC,EAAA,CAAC,MAAM,IAAIA,KAAK,CAACpB,MAAM,KAAK,CAAC,EAAE;AAC7B,IAAA,OAAOoB,KAAK,CAAC,CAAC,CAAC,GAAGvB,QAAQ,GAAGuB,KAAK,CAAC,CAAC,CAAC,GAAGxB,UAAU,GAAGwB,KAAK,CAAC,CAAC,CAAC;AAC/D,EAAA;AAEA,EAAA,OAAO,CAAC;AACV,CAAC;AAEM,IAAMQ,aAAa,GAAG,SAAhBA,aAAaA,CAAGC,KAAK,EAAI;EACpC,IAAMC,KAAK,GAAG,eAAe;AAC7B,EAAA,IAAMC,MAAM,GAAG,CAACF,KAAK,CAACG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAEhC,MAAM;EAE/C,OAAO8B,KAAK,CAACG,IAAI,CAACJ,KAAK,CAAC,IAAIE,MAAM,IAAI,CAAC;AACzC,CAAC;;ACtCD,IAAMG,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,IAAA,EAQb;AAAA,EAAA,IAPJC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;IACnBC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,OAAO,GAAAL,IAAA,CAAPK,OAAO;IACEC,OAAO,GAAAN,IAAA,CAAhBO,OAAO;IACPC,0BAA0B,GAAAR,IAAA,CAA1BQ,0BAA0B;AAE1B,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AAET,EAAA,IAAMC,gBAAgB,GAAGT,mBAAmB,EAAE;AAE9C,EAAA,IAAAU,SAAA,GAAoCC,QAAQ,CAAC,EAAE,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAzCI,IAAAA,UAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,UAAA,CAAA,CAAA,CAAA;AAChC,EAAA,IAAAI,UAAA,GACEL,QAAQ,CAACF,gBAAgB,CAAC;IAAAQ,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AADrBE,IAAAA,mBAAmB,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,sBAAsB,GAAAF,UAAA,CAAA,CAAA,CAAA;EAGlD,IAAAG,UAAA,GAA4BT,QAAQ,CAAC;AACnCU,MAAAA,KAAK,EAAE,KAAK;AACZC,MAAAA,QAAQ,EAAE;AACZ,KAAC,CAAC;IAAAC,UAAA,GAAAV,cAAA,CAAAO,UAAA,EAAA,CAAA,CAAA;AAHKI,IAAAA,MAAM,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,SAAS,GAAAF,UAAA,CAAA,CAAA,CAAA;AAKxB,EAAA,IAAQF,KAAK,GAAeG,MAAM,CAA1BH,KAAK;IAAEC,QAAQ,GAAKE,MAAM,CAAnBF,QAAQ;AAEvB,EAAA,IAAAI,UAAA,GAAgCf,QAAQ,CAAC,EAAE,CAAC;IAAAgB,UAAA,GAAAd,cAAA,CAAAa,UAAA,EAAA,CAAA,CAAA;AAArCE,IAAAA,QAAQ,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,WAAW,GAAAF,UAAA,CAAA,CAAA,CAAA;AAE5B,EAAA,IAAMlD,SAAS,GAAGN,sBAAsB,CAAC4B,aAAa,CAAC;AAEvD,EAAA,IAAM+B,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAGC,CAAC,EAAI;AACzC,IAAA,IAAMxC,KAAK,GAAGwC,CAAC,CAACC,MAAM,CAACC,KAAK;AAC5B,IAAA,IAAI3C,aAAa,CAACC,KAAK,CAAC,EAAE;MACxBsC,WAAW,CAACtC,KAAK,CAAC;AACpB,IAAA;EACF,CAAC;AAED,EAAA,IAAM2C,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,GAAG,EAAEF,KAAK,EAAA;IAAA,OAAKR,SAAS,CAACW,KAAK,CAACD,GAAG,EAAEF,KAAK,CAAC,CAAC;AAAA,EAAA,CAAA;AAEtE,EAAA,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAS;AAC7B,IAAA,IAAI7D,aAAa,GAAGI,SAAS,CAACgD,QAAQ,CAAC;IACvC,IAAIpD,aAAa,GAAGuB,aAAa,EAAE;AACjCvB,MAAAA,aAAa,GAAGuB,aAAa;AAC/B,IAAA;AACA8B,IAAAA,WAAW,CAACtD,UAAU,CAACC,aAAa,EAAEC,SAAS,CAAC,CAAC;EACnD,CAAC;AAED,EAAA,IAAM6D,aAAa,GAAG,SAAhBA,aAAaA,CAAGP,CAAC,EAAI;AACzB,IAAA,IAAIA,CAAC,CAACI,GAAG,KAAK,OAAO,EAAE;AACvBE,IAAAA,gBAAgB,EAAE;EACpB,CAAC;EAED,IAAME,YAAY,GAAGC,WAAW,CAC9B,UAAChE,aAAa,EAAEiE,SAAS,EAAK;AAC5B,IAAA,IAAMC,YAAY,GAAG5C,aAAa,CAACd,GAAG,CAAC,UAAA2D,YAAY,EAAA;MAAA,OACjDC,QAAQ,CAACD,YAAY,EAAE;AACrBE,QAAAA,IAAI,EAAErE,aAAa;AACnB6C,QAAAA,KAAK,EAAEoB,SAAS,CAACpB,KAAK,GAAG,CAAC,GAAGzD,SAAS;AACtC0D,QAAAA,QAAQ,EAAEmB,SAAS,CAACnB,QAAQ,GAAG,CAAC,GAAG1D;AACrC,OAAC,CAAC;AAAA,IAAA,CACJ,CAAC;IACDmD,aAAa,CAAC2B,YAAY,CAAC;AAC7B,EAAA,CAAC,EACD,CAAC5C,aAAa,CAChB,CAAC;AAED,EAAA,IAAMgD,mBAAmB,GAAG,SAAtBA,mBAAmBA,GAAS;AAChC,IAAA,IAAItE,aAAa,GAAGI,SAAS,CAACgD,QAAQ,CAAC;IACvC,IAAIpD,aAAa,GAAGuB,aAAa,EAAE;AACjCvB,MAAAA,aAAa,GAAGuB,aAAa;AAC/B,IAAA;IACAoB,sBAAsB,CAAC3C,aAAa,CAAC;AACrC+D,IAAAA,YAAY,CAAC/D,aAAa,EAAEgD,MAAM,CAAC;EACrC,CAAC;AAEDuB,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAIC,GAAG,CAAC/C,MAAM,CAAC,EAAE;IAEjB,IAAMgD,WAAW,GAAGxC,gBAAgB,GAAG,CAAC,GAAGA,gBAAgB,GAAG,CAAC;AAC/D,IAAA,IAAMyC,aAAa,GAAG;AAAE7B,MAAAA,KAAK,EAAE,KAAK;AAAEC,MAAAA,QAAQ,EAAE;KAAO;IAEvDH,sBAAsB,CAAC8B,WAAW,CAAC;AACnCpB,IAAAA,WAAW,CAACtD,UAAU,CAAC0E,WAAW,EAAExE,SAAS,CAAC,CAAC;IAC/CgD,SAAS,CAACyB,aAAa,CAAC;AACxBX,IAAAA,YAAY,CAACU,WAAW,EAAEC,aAAa,CAAC;EAC1C,CAAC,EAAE,CAACjD,MAAM,EAAExB,SAAS,EAAEgC,gBAAgB,EAAE8B,YAAY,CAAC,CAAC;AAEvD,EAAA,oBACEY,IAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,8BAA8B;IAAAC,QAAA,EAAA,cAC3CC,GAAA,CAACC,UAAU,EAAA;AACTC,MAAAA,KAAK,EAAEhD,CAAC,CAAC,sDAAsD,CAAE;AACjEiD,MAAAA,WAAW,eACTN,IAAA,CAAA,KAAA,EAAA;AAAKC,QAAAA,SAAS,EAAC,2BAA2B;QAAAC,QAAA,EAAA,cACxCC,GAAA,CAACI,MAAM,EAAA;AACL,UAAA,SAAA,EAAQ,uBAAuB;AAC/BC,UAAAA,KAAK,EAAEnD,CAAC,CAAC,6CAA6C,CAAE;AACxDoD,UAAAA,OAAO,EAAEd;AAAoB,SAC9B,CAAC,eACFQ,GAAA,CAACI,MAAM,EAAA;AACL,UAAA,SAAA,EAAQ,eAAe;AACvBC,UAAAA,KAAK,EAAEnD,CAAC,CAAC,sCAAsC,CAAE;AACjDqD,UAAAA,KAAK,EAAC,WAAW;AACjBD,UAAAA,OAAO,EAAE1D;AAAQ,SAClB,CAAC;AAAA,OACC,CACN;AACD4D,MAAAA,WAAW,EAAEtD,CAAC,CACZ,iEACF,CAAE;AAAA6C,MAAAA,QAAA,eAEFF,IAAA,CAAA,KAAA,EAAA;AAAKC,QAAAA,SAAS,EAAC,uBAAuB;AAAAC,QAAAA,QAAA,gBACpCF,IAAA,CAAA,KAAA,EAAA;AAAKC,UAAAA,SAAS,EAAC,2BAA2B;UAAAC,QAAA,EAAA,cACxCC,GAAA,CAACS,KAAK,EAAA;YAAAV,QAAA,EAAE7C,CAAC,CAAC,4CAA4C;AAAC,WAAQ,CAAC,eAChE8C,GAAA,CAACU,KAAK,EAAA;YACJC,cAAc,EAAA,IAAA;AACdb,YAAAA,SAAS,EAAC,MAAM;AAChB,YAAA,SAAA,EAAQ,YAAY;AACpBc,YAAAA,WAAW,EAAEzF,SAAS,GAAG,UAAU,GAAG,OAAQ;AAC9CwD,YAAAA,KAAK,EAAEL,QAAS;AAChBuC,YAAAA,MAAM,EAAE9B,gBAAiB;AACzB+B,YAAAA,QAAQ,EAAEtC,6BAA8B;AACxCuC,YAAAA,SAAS,EAAE/B;AAAc,WAC1B,CAAC;AAAA,SACC,CAAC,EACLjC,0BAA0B,iBACzB8C,IAAA,CAAAmB,QAAA,EAAA;UAAAjB,QAAA,EAAA,cACEC,GAAA,CAACiB,MAAM,EAAA;AACLC,YAAAA,OAAO,EAAEnD,KAAM;AACf,YAAA,SAAA,EAAQ,gBAAgB;AACxBoD,YAAAA,EAAE,EAAC,OAAO;AACVd,YAAAA,KAAK,EAAEnD,CAAC,CAAC,qCAAqC,CAAE;AAChDkE,YAAAA,IAAI,EAAC,OAAO;AACZN,YAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAErC,CAAC,EAAA;cAAA,OAAIG,iBAAiB,CAAC,OAAO,EAAEH,CAAC,CAACC,MAAM,CAACwC,OAAO,CAAC;AAAA,YAAA;AAAC,WAC7D,CAAC,eACFlB,GAAA,CAACiB,MAAM,EAAA;AACLC,YAAAA,OAAO,EAAElD,QAAS;AAClB,YAAA,SAAA,EAAQ,mBAAmB;AAC3BmD,YAAAA,EAAE,EAAC,UAAU;AACbd,YAAAA,KAAK,EAAEnD,CAAC,CAAC,wCAAwC,CAAE;AACnDkE,YAAAA,IAAI,EAAC,UAAU;AACfN,YAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAErC,CAAC,EAAA;cAAA,OAAIG,iBAAiB,CAAC,UAAU,EAAEH,CAAC,CAACC,MAAM,CAACwC,OAAO,CAAC;AAAA,YAAA;AAAC,WAChE,CAAC;AAAA,SACF,CACH;OACE;KACK,CAAC,eACbrB,IAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,uBAAuB;MAAAC,QAAA,EAAA,cACpCC,GAAA,CAACqB,UAAU,EAAA;AAACd,QAAAA,KAAK,EAAC,IAAI;QAAAR,QAAA,EACnB7C,CAAC,CAAC,6CAA6C;OACtC,CAAC,EACZM,UAAU,CAAC9B,GAAG,CAAC,UAAC4F,SAAS,EAAEC,KAAK,EAAA;AAAA,QAAA,oBAC/B1B,IAAA,CAAA,KAAA,EAAA;AACEC,UAAAA,SAAS,EAAC,6FAA6F;UAAAC,QAAA,EAAA,cAGvGC,GAAA,CAACqB,UAAU,EAAA;AAACvB,YAAAA,SAAS,EAAC,4BAA4B;AAACS,YAAAA,KAAK,EAAC,OAAO;AAAAR,YAAAA,QAAA,EAC7DuB;AAAS,WACA,CAAC,eACbtB,GAAA,CAACwB,qBAAqB,EAAA;AACpB1B,YAAAA,SAAS,EAAC,eAAe;AACzBS,YAAAA,KAAK,EAAC,WAAW;AACjB5B,YAAAA,KAAK,EAAE2C;AAAU,WAClB,CAAC;AAAA,SAAA,EATGC,KAUF,CAAC;AAAA,MAAA,CACP,CAAC;AAAA,KACC,CAAC,EACL1E,OAAO,iBACNgD,IAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,4BAA4B;MAAAC,QAAA,EAAA,cACzCC,GAAA,CAACS,KAAK,EAAA;QAAAV,QAAA,EAAE7C,CAAC,CAAC,uCAAuC;AAAC,OAAQ,CAAC,eAC3D8C,GAAA,CAACnD,OAAO,EAAA;AAAOe,QAAAA,mBAAmB,EAAnBA;AAAmB,OAAK,CAAC;AAAA,KACrC,CACN;AAAA,GACE,CAAC;AAEV,CAAC;;;;;ACtLD,IAAM6D,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAlF,IAAA,EAYlB;AAAA,EAAA,IAAAmF,iBAAA,GAAAnF,IAAA,CAXJ8C,YAAY;AAAZA,IAAAA,YAAY,GAAAqC,iBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,iBAAA;IAAAC,kBAAA,GAAApF,IAAA,CACnBC,aAAa;AAAbA,IAAAA,aAAa,GAAAmF,kBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,kBAAA;IAClBlF,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,mBAAmB,GAAAH,IAAA,CAAnBG,mBAAmB;IACnBC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,OAAO,GAAAL,IAAA,CAAPK,OAAO;IAAAgF,cAAA,GAAArF,IAAA,CACPsF,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,cAAA;IACjB9E,OAAO,GAAAP,IAAA,CAAPO,OAAO;IAAAgF,qBAAA,GAAAvF,IAAA,CACPQ,0BAA0B;AAA1BA,IAAAA,0BAA0B,GAAA+E,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,SAAA,GAAAxF,IAAA,CAClCyF,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAA,MAAA,GAAG,OAAO,GAAAA,SAAA;AACXE,IAAAA,UAAU,GAAAC,wBAAA,CAAA3F,IAAA,EAAA4F,SAAA,CAAA;AAEb,EAAA,IAAAnF,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;EAET,IAAMkF,oBAAoB,GAAGC,UAAU,CAAC7F,aAAa,CAAC,GAClDA,aAAa,GACb,CAAC6C,YAAY,CAAC;EAElB,oBACEQ,IAAA,CAACyC,IAAI,EAAAC,aAAA,CAAAA,aAAA,KAAAA,aAAA,CAAA;AAAO5F,IAAAA,MAAM,EAANA,MAAM;AAAEC,IAAAA,OAAO,EAAPA,OAAO;AAAEoF,IAAAA,IAAI,EAAJA;AAAI,GAAA,EAAKC,UAAU,CAAA,CAAA,EAAA,EAAA,EAAA;AAAI,IAAA,SAAA,EAAQ,YAAY;AAAAlC,IAAAA,QAAA,EAAA,cACtEC,GAAA,CAACsC,IAAI,CAACE,MAAM,EAAA;MAAAzC,QAAA,eACVC,GAAA,CAACqB,UAAU,EAAA;AAACd,QAAAA,KAAK,EAAC,IAAI;QAAAR,QAAA,EACnB7C,CAAC,CAAC,qCAAqC;OAC9B;AAAC,KACF,CAAC,eACd8C,GAAA,CAACsC,IAAI,CAACG,IAAI,EAAA;AAAC3C,MAAAA,SAAS,EAAC,uBAAuB;AAAAC,MAAAA,QAAA,EACzC8B,SAAS,gBACR7B,GAAA,CAAC0C,OAAO,EAAA;AAAC5C,QAAAA,SAAS,EAAC;AAAS,OAAE,CAAC,gBAE/BE,GAAA,CAAC1D,aAAa,EAAA;AAEVS,QAAAA,0BAA0B,EAA1BA,0BAA0B;AAC1BL,QAAAA,mBAAmB,EAAnBA,mBAAmB;AACnBC,QAAAA,MAAM,EAANA,MAAM;AACNC,QAAAA,OAAO,EAAPA,OAAO;AACPE,QAAAA,OAAO,EAAPA,OAAO;AACPL,QAAAA,aAAa,EAAbA,aAAa;AAEfD,QAAAA,aAAa,EAAE4F;OAChB;AACF,KACQ,CAAC;AAAA,GAAA,CACR,CAAC;AAEX;;;;"}
|
|
@@ -12,16 +12,16 @@ var React = require('react');
|
|
|
12
12
|
var utils = require('@bigbinary/neeto-commons-frontend/utils');
|
|
13
13
|
var Label = require('@bigbinary/neetoui/Label');
|
|
14
14
|
var Input = require('@bigbinary/neetoui/Input');
|
|
15
|
-
var Tooltip = require('@bigbinary/neetoui/Tooltip');
|
|
16
15
|
var Switch = require('@bigbinary/neetoui/Switch');
|
|
16
|
+
var Button = require('@bigbinary/neetoui/Button');
|
|
17
17
|
var ramda = require('ramda');
|
|
18
|
+
var CardLayout = require('./CardLayout.js');
|
|
18
19
|
var CopyToClipboardButton = require('./CopyToClipboardButton.js');
|
|
19
20
|
var jsxRuntime = require('react/jsx-runtime');
|
|
20
21
|
require('classnames');
|
|
21
22
|
require('@bigbinary/neeto-commons-frontend/utils/general');
|
|
22
23
|
require('@bigbinary/neeto-icons/Copy');
|
|
23
24
|
require('@bigbinary/neeto-icons/Check');
|
|
24
|
-
require('@bigbinary/neetoui/Button');
|
|
25
25
|
require('./inject-css-B6qYtOJe.js');
|
|
26
26
|
|
|
27
27
|
var ONE_SECOND = 1;
|
|
@@ -76,6 +76,7 @@ var SharePaneBody = function SharePaneBody(_ref) {
|
|
|
76
76
|
totalDuration = _ref.totalDuration,
|
|
77
77
|
getCurrentTimestamp = _ref.getCurrentTimestamp,
|
|
78
78
|
isOpen = _ref.isOpen,
|
|
79
|
+
onClose = _ref.onClose,
|
|
79
80
|
Preview = _ref.preview,
|
|
80
81
|
enableAutoplayAndMuteFlags = _ref.enableAutoplayAndMuteFlags;
|
|
81
82
|
var _useTranslation = reactI18next.useTranslation(),
|
|
@@ -117,84 +118,116 @@ var SharePaneBody = function SharePaneBody(_ref) {
|
|
|
117
118
|
if (timeInSeconds > totalDuration) {
|
|
118
119
|
timeInSeconds = totalDuration;
|
|
119
120
|
}
|
|
120
|
-
setCurrentPlaybackTime(timeInSeconds);
|
|
121
121
|
setRawInput(formatTime(timeInSeconds, showHours));
|
|
122
122
|
};
|
|
123
123
|
var handleKeyDown = function handleKeyDown(e) {
|
|
124
124
|
if (e.key !== "Enter") return;
|
|
125
125
|
formatAndSetTime();
|
|
126
126
|
};
|
|
127
|
-
React.
|
|
128
|
-
if (ramda.not(isOpen)) return;
|
|
129
|
-
setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);
|
|
130
|
-
setRawInput(formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours));
|
|
131
|
-
}, [isOpen, showHours, currentTimestamp]);
|
|
132
|
-
React.useEffect(function () {
|
|
127
|
+
var generateUrls = React.useCallback(function (timeInSeconds, urlParams) {
|
|
133
128
|
var playbackUrls = recordingUrls.map(function (recordingUrl) {
|
|
134
129
|
return utils.buildUrl(recordingUrl, {
|
|
135
|
-
time:
|
|
136
|
-
muted: muted ? 1 : undefined,
|
|
137
|
-
autoplay: autoplay ? 1 : undefined
|
|
130
|
+
time: timeInSeconds,
|
|
131
|
+
muted: urlParams.muted ? 1 : undefined,
|
|
132
|
+
autoplay: urlParams.autoplay ? 1 : undefined
|
|
138
133
|
});
|
|
139
134
|
});
|
|
140
135
|
setShareLinks(playbackUrls);
|
|
141
|
-
}, [recordingUrls
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
136
|
+
}, [recordingUrls]);
|
|
137
|
+
var handleRegenerateUrl = function handleRegenerateUrl() {
|
|
138
|
+
var timeInSeconds = parseTime(rawInput);
|
|
139
|
+
if (timeInSeconds > totalDuration) {
|
|
140
|
+
timeInSeconds = totalDuration;
|
|
141
|
+
}
|
|
142
|
+
setCurrentPlaybackTime(timeInSeconds);
|
|
143
|
+
generateUrls(timeInSeconds, params);
|
|
144
|
+
};
|
|
145
|
+
React.useEffect(function () {
|
|
146
|
+
if (ramda.not(isOpen)) return;
|
|
147
|
+
var initialTime = currentTimestamp > 0 ? currentTimestamp : 0;
|
|
148
|
+
var initialParams = {
|
|
149
|
+
muted: false,
|
|
150
|
+
autoplay: false
|
|
151
|
+
};
|
|
152
|
+
setCurrentPlaybackTime(initialTime);
|
|
153
|
+
setRawInput(formatTime(initialTime, showHours));
|
|
154
|
+
setParams(initialParams);
|
|
155
|
+
generateUrls(initialTime, initialParams);
|
|
156
|
+
}, [isOpen, showHours, currentTimestamp, generateUrls]);
|
|
157
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
158
|
+
className: "flex w-full flex-col gap-y-6",
|
|
159
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(CardLayout, {
|
|
160
|
+
title: t("neetoMolecules.shareRecording.configureUrlParameters"),
|
|
161
|
+
actionBlock: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
162
|
+
className: "flex items-center gap-x-2",
|
|
163
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
164
|
+
"data-cy": "regenerate-url-button",
|
|
165
|
+
label: t("neetoMolecules.shareRecording.regenerateUrl"),
|
|
166
|
+
onClick: handleRegenerateUrl
|
|
167
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
168
|
+
"data-cy": "cancel-button",
|
|
169
|
+
label: t("neetoMolecules.shareRecording.cancel"),
|
|
155
170
|
style: "secondary",
|
|
156
|
-
|
|
171
|
+
onClick: onClose
|
|
157
172
|
})]
|
|
158
|
-
},
|
|
173
|
+
}),
|
|
174
|
+
description: t("neetoMolecules.shareRecording.configureUrlParametersDescription"),
|
|
175
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
176
|
+
className: "flex flex-col gap-y-4",
|
|
177
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
178
|
+
className: "flex items-center gap-x-2",
|
|
179
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Label, {
|
|
180
|
+
children: t("neetoMolecules.shareRecording.startVideoAt")
|
|
181
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Input, {
|
|
182
|
+
unlimitedChars: true,
|
|
183
|
+
className: "w-40",
|
|
184
|
+
"data-cy": "time-input",
|
|
185
|
+
placeholder: showHours ? "HH:MM:SS" : "MM:SS",
|
|
186
|
+
value: rawInput,
|
|
187
|
+
onBlur: formatAndSetTime,
|
|
188
|
+
onChange: handlePlaybackTimestampChange,
|
|
189
|
+
onKeyDown: handleKeyDown
|
|
190
|
+
})]
|
|
191
|
+
}), enableAutoplayAndMuteFlags && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
192
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Switch, {
|
|
193
|
+
checked: muted,
|
|
194
|
+
"data-cy": "muted-checkbox",
|
|
195
|
+
id: "muted",
|
|
196
|
+
label: t("neetoMolecules.shareRecording.muted"),
|
|
197
|
+
name: "muted",
|
|
198
|
+
onChange: function onChange(e) {
|
|
199
|
+
return handleFlagsChange("muted", e.target.checked);
|
|
200
|
+
}
|
|
201
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Switch, {
|
|
202
|
+
checked: autoplay,
|
|
203
|
+
"data-cy": "autoplay-checkbox",
|
|
204
|
+
id: "autoplay",
|
|
205
|
+
label: t("neetoMolecules.shareRecording.autoplay"),
|
|
206
|
+
name: "autoplay",
|
|
207
|
+
onChange: function onChange(e) {
|
|
208
|
+
return handleFlagsChange("autoplay", e.target.checked);
|
|
209
|
+
}
|
|
210
|
+
})]
|
|
211
|
+
})]
|
|
212
|
+
})
|
|
159
213
|
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
160
|
-
className: "flex
|
|
161
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
checked: muted,
|
|
178
|
-
"data-cy": "muted-checkbox",
|
|
179
|
-
id: "muted",
|
|
180
|
-
label: t("neetoMolecules.shareRecording.muted"),
|
|
181
|
-
name: "muted",
|
|
182
|
-
onChange: function onChange(e) {
|
|
183
|
-
return handleFlagsChange("muted", e.target.checked);
|
|
184
|
-
}
|
|
185
|
-
})
|
|
186
|
-
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
187
|
-
className: "flex items-center gap-x-2",
|
|
188
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Switch, {
|
|
189
|
-
checked: autoplay,
|
|
190
|
-
"data-cy": "autoplay-checkbox",
|
|
191
|
-
id: "autoplay",
|
|
192
|
-
label: t("neetoMolecules.shareRecording.autoplay"),
|
|
193
|
-
name: "autoplay",
|
|
194
|
-
onChange: function onChange(e) {
|
|
195
|
-
return handleFlagsChange("autoplay", e.target.checked);
|
|
196
|
-
}
|
|
197
|
-
})
|
|
214
|
+
className: "flex flex-col gap-y-2",
|
|
215
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
216
|
+
style: "h3",
|
|
217
|
+
children: t("neetoMolecules.shareRecording.generatedUrls")
|
|
218
|
+
}), shareLinks.map(function (shareLink, index) {
|
|
219
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
220
|
+
className: "neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex w-full items-center justify-between gap-1 p-2",
|
|
221
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
222
|
+
className: "min-w-0 flex-1 break-words",
|
|
223
|
+
style: "body2",
|
|
224
|
+
children: shareLink
|
|
225
|
+
}), /*#__PURE__*/jsxRuntime.jsx(CopyToClipboardButton, {
|
|
226
|
+
className: "flex-shrink-0",
|
|
227
|
+
style: "secondary",
|
|
228
|
+
value: shareLink
|
|
229
|
+
})]
|
|
230
|
+
}, index);
|
|
198
231
|
})]
|
|
199
232
|
}), Preview && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
200
233
|
className: "flex flex-col gap-y-2 pt-2",
|
|
@@ -249,6 +282,7 @@ var ShareRecordingPane = function ShareRecordingPane(_ref) {
|
|
|
249
282
|
enableAutoplayAndMuteFlags: enableAutoplayAndMuteFlags,
|
|
250
283
|
getCurrentTimestamp: getCurrentTimestamp,
|
|
251
284
|
isOpen: isOpen,
|
|
285
|
+
onClose: onClose,
|
|
252
286
|
preview: preview,
|
|
253
287
|
totalDuration: totalDuration,
|
|
254
288
|
recordingUrls: recordingUrlsToShare
|
|
@@ -1 +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 { useState, useEffect } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Label, Typography, Input, Tooltip, Switch } from \"neetoui\";\nimport { assoc, 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 recordingUrls,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n preview: Preview,\n enableAutoplayAndMuteFlags,\n}) => {\n const { t } = useTranslation();\n\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLinks, setShareLinks] = useState([]);\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n\n const [params, setParams] = useState({\n muted: false,\n autoplay: false,\n });\n\n const { muted, autoplay } = params;\n\n const [rawInput, setRawInput] = useState(\"\");\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 handleFlagsChange = (key, value) => setParams(assoc(key, value));\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 setCurrentPlaybackTime(currentTimestamp > 0 ? currentTimestamp : 0);\n setRawInput(\n formatTime(currentTimestamp > 0 ? currentTimestamp : 0, showHours)\n );\n }, [isOpen, showHours, currentTimestamp]);\n\n useEffect(() => {\n const playbackUrls = recordingUrls.map(recordingUrl =>\n buildUrl(recordingUrl, {\n time: currentPlaybackTime,\n muted: muted ? 1 : undefined,\n autoplay: autoplay ? 1 : undefined,\n })\n );\n\n setShareLinks(playbackUrls);\n }, [recordingUrls, currentPlaybackTime, muted, autoplay]);\n\n return (\n <>\n {shareLinks.map((shareLink, index) => (\n <div\n className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg mb-2 flex w-full items-center justify-between gap-1 p-2\"\n key={index}\n >\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 ))}\n <div className=\"flex items-center gap-x-2\">\n <Label>{t(\"neetoMolecules.shareRecording.checkboxLabel\")}</Label>\n <Input\n className=\"w-40\"\n data-cy=\"time-input\"\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n {enableAutoplayAndMuteFlags && (\n <div className=\"mt-3 flex flex-col gap-y-4\">\n <div className=\"flex items-center gap-x-2\">\n <Switch\n checked={muted}\n data-cy=\"muted-checkbox\"\n id=\"muted\"\n label={t(\"neetoMolecules.shareRecording.muted\")}\n name=\"muted\"\n onChange={e => handleFlagsChange(\"muted\", e.target.checked)}\n />\n </div>\n <div className=\"flex items-center gap-x-2\">\n <Switch\n checked={autoplay}\n data-cy=\"autoplay-checkbox\"\n id=\"autoplay\"\n label={t(\"neetoMolecules.shareRecording.autoplay\")}\n name=\"autoplay\"\n onChange={e => handleFlagsChange(\"autoplay\", e.target.checked)}\n />\n </div>\n </div>\n )}\n {Preview && (\n <div className=\"flex flex-col gap-y-2 pt-2\">\n <Label>{t(\"neetoMolecules.shareRecording.preview\")}</Label>\n <Preview {...{ currentPlaybackTime }} />\n </div>\n )}\n </>\n );\n};\n\nexport default SharePaneBody;\n","/* eslint-disable @bigbinary/neeto/no-dumb-components-with-use-translation */\nimport { isNotEmpty } from \"neetocist\";\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 = null,\n recordingUrls = [],\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n preview,\n enableAutoplayAndMuteFlags = false,\n size = \"large\",\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n const recordingUrlsToShare = isNotEmpty(recordingUrls)\n ? recordingUrls\n : [recordingUrl];\n\n return (\n <Pane {...{ isOpen, onClose, size, ...otherProps }} data-cy=\"share-pane\">\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col gap-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{\n enableAutoplayAndMuteFlags,\n getCurrentTimestamp,\n isOpen,\n preview,\n totalDuration,\n }}\n recordingUrls={recordingUrlsToShare}\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,\n /**\n * Recording URLs used for building the share link.\n */\n recordingUrls: PropTypes.array,\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 * Component to render as a preview of the recording.\n */\n preview: PropTypes.elementType,\n /**\n * Size of the pane.\n */\n size: PropTypes.oneOf([\"extraLarge\", \"large\", \"small\"]),\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","recordingUrls","totalDuration","getCurrentTimestamp","isOpen","Preview","preview","enableAutoplayAndMuteFlags","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLinks","setShareLinks","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","muted","autoplay","_useState6","params","setParams","_useState7","_useState8","rawInput","setRawInput","handlePlaybackTimestampChange","e","target","value","handleFlagsChange","key","assoc","formatAndSetTime","handleKeyDown","useEffect","not","playbackUrls","recordingUrl","buildUrl","time","_jsxs","_Fragment","children","shareLink","index","className","_jsx","Tooltip","content","Typography","style","CopyToClipboardButton","Label","Input","placeholder","onBlur","onChange","onKeyDown","Switch","checked","id","label","name","ShareRecordingPane","_ref$recordingUrl","_ref$recordingUrls","onClose","_ref$isLoading","isLoading","_ref$enableAutoplayAn","_ref$size","size","otherProps","_objectWithoutProperties","_excluded","recordingUrlsToShare","isNotEmpty","Pane","_objectSpread","Header","Body","Spinner"],"mappings":"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"}
|
|
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 { useState, useEffect, useCallback } from \"react\";\n\nimport { buildUrl } from \"neetocommons/utils\";\nimport { Label, Typography, Input, Switch, Button } from \"neetoui\";\nimport { assoc, not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CardLayout from \"components/CardLayout\";\nimport CopyToClipboardButton from \"components/CopyToClipboardButton\";\n\nimport {\n formatTime,\n parseTime,\n shouldRenderHoursInput,\n validateInput,\n} from \"./utils\";\n\nconst SharePaneBody = ({\n recordingUrls,\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n preview: Preview,\n enableAutoplayAndMuteFlags,\n}) => {\n const { t } = useTranslation();\n\n const currentTimestamp = getCurrentTimestamp();\n\n const [shareLinks, setShareLinks] = useState([]);\n const [currentPlaybackTime, setCurrentPlaybackTime] =\n useState(currentTimestamp);\n\n const [params, setParams] = useState({\n muted: false,\n autoplay: false,\n });\n\n const { muted, autoplay } = params;\n\n const [rawInput, setRawInput] = useState(\"\");\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 handleFlagsChange = (key, value) => setParams(assoc(key, value));\n\n const formatAndSetTime = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setRawInput(formatTime(timeInSeconds, showHours));\n };\n\n const handleKeyDown = e => {\n if (e.key !== \"Enter\") return;\n formatAndSetTime();\n };\n\n const generateUrls = useCallback(\n (timeInSeconds, urlParams) => {\n const playbackUrls = recordingUrls.map(recordingUrl =>\n buildUrl(recordingUrl, {\n time: timeInSeconds,\n muted: urlParams.muted ? 1 : undefined,\n autoplay: urlParams.autoplay ? 1 : undefined,\n })\n );\n setShareLinks(playbackUrls);\n },\n [recordingUrls]\n );\n\n const handleRegenerateUrl = () => {\n let timeInSeconds = parseTime(rawInput);\n if (timeInSeconds > totalDuration) {\n timeInSeconds = totalDuration;\n }\n setCurrentPlaybackTime(timeInSeconds);\n generateUrls(timeInSeconds, params);\n };\n\n useEffect(() => {\n if (not(isOpen)) return;\n\n const initialTime = currentTimestamp > 0 ? currentTimestamp : 0;\n const initialParams = { muted: false, autoplay: false };\n\n setCurrentPlaybackTime(initialTime);\n setRawInput(formatTime(initialTime, showHours));\n setParams(initialParams);\n generateUrls(initialTime, initialParams);\n }, [isOpen, showHours, currentTimestamp, generateUrls]);\n\n return (\n <div className=\"flex w-full flex-col gap-y-6\">\n <CardLayout\n title={t(\"neetoMolecules.shareRecording.configureUrlParameters\")}\n actionBlock={\n <div className=\"flex items-center gap-x-2\">\n <Button\n data-cy=\"regenerate-url-button\"\n label={t(\"neetoMolecules.shareRecording.regenerateUrl\")}\n onClick={handleRegenerateUrl}\n />\n <Button\n data-cy=\"cancel-button\"\n label={t(\"neetoMolecules.shareRecording.cancel\")}\n style=\"secondary\"\n onClick={onClose}\n />\n </div>\n }\n description={t(\n \"neetoMolecules.shareRecording.configureUrlParametersDescription\"\n )}\n >\n <div className=\"flex flex-col gap-y-4\">\n <div className=\"flex items-center gap-x-2\">\n <Label>{t(\"neetoMolecules.shareRecording.startVideoAt\")}</Label>\n <Input\n unlimitedChars\n className=\"w-40\"\n data-cy=\"time-input\"\n placeholder={showHours ? \"HH:MM:SS\" : \"MM:SS\"}\n value={rawInput}\n onBlur={formatAndSetTime}\n onChange={handlePlaybackTimestampChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n {enableAutoplayAndMuteFlags && (\n <>\n <Switch\n checked={muted}\n data-cy=\"muted-checkbox\"\n id=\"muted\"\n label={t(\"neetoMolecules.shareRecording.muted\")}\n name=\"muted\"\n onChange={e => handleFlagsChange(\"muted\", e.target.checked)}\n />\n <Switch\n checked={autoplay}\n data-cy=\"autoplay-checkbox\"\n id=\"autoplay\"\n label={t(\"neetoMolecules.shareRecording.autoplay\")}\n name=\"autoplay\"\n onChange={e => handleFlagsChange(\"autoplay\", e.target.checked)}\n />\n </>\n )}\n </div>\n </CardLayout>\n <div className=\"flex flex-col gap-y-2\">\n <Typography style=\"h3\">\n {t(\"neetoMolecules.shareRecording.generatedUrls\")}\n </Typography>\n {shareLinks.map((shareLink, index) => (\n <div\n className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex w-full items-center justify-between gap-1 p-2\"\n key={index}\n >\n <Typography className=\"min-w-0 flex-1 break-words\" style=\"body2\">\n {shareLink}\n </Typography>\n <CopyToClipboardButton\n className=\"flex-shrink-0\"\n style=\"secondary\"\n value={shareLink}\n />\n </div>\n ))}\n </div>\n {Preview && (\n <div className=\"flex flex-col gap-y-2 pt-2\">\n <Label>{t(\"neetoMolecules.shareRecording.preview\")}</Label>\n <Preview {...{ currentPlaybackTime }} />\n </div>\n )}\n </div>\n );\n};\n\nexport default SharePaneBody;\n","import { isNotEmpty } from \"neetocist\";\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 = null,\n recordingUrls = [],\n totalDuration,\n getCurrentTimestamp,\n isOpen,\n onClose,\n isLoading = false,\n preview,\n enableAutoplayAndMuteFlags = false,\n size = \"large\",\n ...otherProps\n}) => {\n const { t } = useTranslation();\n\n const recordingUrlsToShare = isNotEmpty(recordingUrls)\n ? recordingUrls\n : [recordingUrl];\n\n return (\n <Pane {...{ isOpen, onClose, size, ...otherProps }} data-cy=\"share-pane\">\n <Pane.Header>\n <Typography style=\"h2\">\n {t(\"neetoMolecules.shareRecording.title\")}\n </Typography>\n </Pane.Header>\n <Pane.Body className=\"flex flex-col gap-y-2\">\n {isLoading ? (\n <Spinner className=\"mx-auto\" />\n ) : (\n <SharePaneBody\n {...{\n enableAutoplayAndMuteFlags,\n getCurrentTimestamp,\n isOpen,\n onClose,\n preview,\n totalDuration,\n }}\n recordingUrls={recordingUrlsToShare}\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,\n /**\n * Recording URLs used for building the share link.\n */\n recordingUrls: PropTypes.array,\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 * Component to render as a preview of the recording.\n */\n preview: PropTypes.elementType,\n /**\n * Size of the pane.\n */\n size: PropTypes.oneOf([\"extraLarge\", \"large\", \"small\"]),\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","recordingUrls","totalDuration","getCurrentTimestamp","isOpen","onClose","Preview","preview","enableAutoplayAndMuteFlags","_useTranslation","useTranslation","t","currentTimestamp","_useState","useState","_useState2","_slicedToArray","shareLinks","setShareLinks","_useState3","_useState4","currentPlaybackTime","setCurrentPlaybackTime","_useState5","muted","autoplay","_useState6","params","setParams","_useState7","_useState8","rawInput","setRawInput","handlePlaybackTimestampChange","e","target","value","handleFlagsChange","key","assoc","formatAndSetTime","handleKeyDown","generateUrls","useCallback","urlParams","playbackUrls","recordingUrl","buildUrl","time","handleRegenerateUrl","useEffect","not","initialTime","initialParams","_jsxs","className","children","_jsx","CardLayout","title","actionBlock","Button","label","onClick","style","description","Label","Input","unlimitedChars","placeholder","onBlur","onChange","onKeyDown","_Fragment","Switch","checked","id","name","Typography","shareLink","index","CopyToClipboardButton","ShareRecordingPane","_ref$recordingUrl","_ref$recordingUrls","_ref$isLoading","isLoading","_ref$enableAutoplayAn","_ref$size","size","otherProps","_objectWithoutProperties","_excluded","recordingUrlsToShare","isNotEmpty","Pane","_objectSpread","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": "4.0.
|
|
3
|
+
"version": "4.0.96",
|
|
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
|
@@ -814,10 +814,16 @@
|
|
|
814
814
|
"title": "Share recording",
|
|
815
815
|
"preview": "Preview",
|
|
816
816
|
"checkboxLabel": "Start at",
|
|
817
|
+
"startVideoAt": "Start video at",
|
|
817
818
|
"tooltipContent": "Copy link",
|
|
818
819
|
"successTooltipContent": "Link copied",
|
|
819
820
|
"muted": "Share the video muted",
|
|
820
|
-
"autoplay": "Autoplay"
|
|
821
|
+
"autoplay": "Autoplay",
|
|
822
|
+
"configureUrlParameters": "Configure URL parameters",
|
|
823
|
+
"configureUrlParametersDescription": "URLs are generated based on the below configuration. Update the configuration to regenerate them.",
|
|
824
|
+
"generatedUrls": "Generated URLs",
|
|
825
|
+
"regenerateUrl": "Regenerate URL",
|
|
826
|
+
"cancel": "Cancel"
|
|
821
827
|
},
|
|
822
828
|
"fileUpload": {
|
|
823
829
|
"filesDropzone": {
|